INNER CODE UNIT · Python

_is_loopback_host

slive777/OpenAver · web/app.py:505

def _is_loopback_host(host):
    """判斷 `host` 是否為本機(`/api/trigger-update` 三層護欄 CD-110b-5 用)。

    與 `_LOOPBACK_HOSTS`(:204)的關係:`_LOOPBACK_HOSTS` 是 middleware 的**短路
    名單**,只收兩個精確字面值,回答的是「要不要跳過讀 config」——這裡**不動它**。
    本函式回答的是另一個問題:「這個 client/Origin host 是不是本機」,用
    `ipaddress.is_loopback` 額外涵蓋 `127.0.0.0/8` 其餘位址、IPv4-mapped IPv6
    (`::ffff:127.0.0.1`),並加收 `localhost` 字面(純位址比對會漏它)。兩者
    判斷的集合都只可能來自本機,所以本函式是 `_LOOPBACK_HOSTS` 的**嚴格超集**,
    超集不製造安全缺口;反過來若本函式比 `_LOOPBACK_HOSTS` 更窄,才會出現
    「middleware 放行但端點誤拒」的桌面自鎖風險。
    """
    if not host:
        return False
    if host == "localhost":
        return True
    try:
        addr = ipaddress.ip_address(host)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…