僅允許對域內特定引用者的請求
請考慮以下情況:
我有一個與 IIS 在同一台伺服器上執行的 API。IIS 正在託管一個網頁。我只想允許訪問此網頁的 API。域內沒有其他頁面。
假設域是example.com,網頁是example.com/page 這些都不應該工作,example.com,example.com/other。只有 example.com/page 應該有權訪問。
作為獎勵,我想知道我是否可以阻止對 API 的直接訪問。所以我想禁止去 URL 欄並使用 API 地址進行獲取請求。
我只想允許訪問此網頁的 API。域內沒有其他頁面。
您所描述的最好實現為 HTTP 引薦來源網址
$$ sic $$api 端的白名單。Http Referer 標頭描述了引用站點,預設情況下瀏覽器會對其進行廣告 - 但請注意,標頭是客戶端提供的,因此雖然這將阻止天真的 Web 使用者從不同站點訪問您的 API,但如果使用者自己有動機從站點訪問 api,他們可以輕鬆地偽造一個 http Referer 標頭。 保護 API 免受非法使用的唯一真正方法是向 API 伺服器提供身份驗證和授權。即便如此,任何授權 cna 的人都會在帶有偽造 http 標頭的 api 呼叫中提供相同的憑據。因此,歸根結底,您無法真正阻止有動力的一方在不使用該站點的情況下訪問 api。不過,今天的網站通常不會擔心這一點 - 他們專注於確保使用 CORS 來防止對不知情使用者的跨站點腳本攻擊,並專注於身份驗證和授權以阻止不良行為者,他們只會偽造客戶提供的任何東西。
作為獎勵,我想知道我是否可以阻止對 API 的直接訪問。所以我想禁止去 URL 欄並使用 API 地址進行獲取請求。
將某些推薦人列入白名單應該可以做到這一點。直接輸入 URL 的連結不提供引用者,因此與您的白名單不匹配。您並沒有真正阻止對 api 的訪問,該 api 需要可以從您網站的合法使用者的任意 IP 訪問,但您正在通過檢查引薦來源並拒絕不符合您的白名單的請求來進行簡單的授權檢查。