如何給網站添加Referer驗證
本文描述了一個關于 http 協議中 referer 的 metadata 參數的提議,使用這個 metadata 參數,html 文檔可以控制 http 請求中的 referer ,比如是否發送 referer、只發送 hostname 還是發送完整的 referer 等。雖然有一些方法可以控制 referer ,比如 flash,以及一些 js 的 tricks,但是本文中描述的是另外一番景象。使用場景在某些情況下,出于一些原因,網站想要控制頁面發送給 server 的 referer 信息的情況下,可以使用這一 referer metadata 參數。隱私社交網站一般都會有用戶個人頁面,這些頁面中用戶都有可能添加一些外網的鏈接,而社交網站有可能不希望在用戶點擊了這些鏈接的時候,泄露用戶頁面的 URL ,因為這些 URL 中可能包含一些敏感信息。當然,有些社交網站可能只想在 referer 中提供一個 hostname,而不是完整的 URL 信息。安全有些使用了 https 的網站,可能在 URL 中使用一個參數(sid 等)來作為用戶身份憑證,而又需要引入其他 https 網站的資源,這種情況下,網站肯定不希望泄露用戶的身份憑證信息。Object-Capability Discipline有些網站遵循Object-Capability Discipline,而 referer 剛好與這一策略相悖,所以,網站能夠控制 refeer 將對 Object-Capability Discipline 很有利。技術細節referer 的 metedata 參數可以設置為以下幾種類型的值:neveralwaysorigindefault如果在文檔中插入 meta 標簽,并且 name 屬性的值為 referer,瀏覽器客戶端將按照如下步驟處理這個標簽:1.如果 meta 標簽中沒有 content 屬性,則終止下面所有操作2.將 content 的值復制給 referrer-policy ,并轉換為小寫3.檢查 content 的值是否為上面 list 中的一個,如果不是,則將值置為 default上述步驟之后,瀏覽器后續發起 http 請求的