1 回答

TA貢獻1843條經驗 獲得超7個贊
一種簡單的方法是創建一個允許值的數組,并使用循環。創建一個布爾值,說明用戶是否來自允許的站點,將其默認設置為 false。在遍歷允許的站點時,如果引用者匹配任何允許的站點,則將此布爾值更改為 true。
$allowed_sites = ['example.com', 'example2.com'];
$referrer_is_allowed = false;
foreach($allowed_sites as $url) {
if(strstr($_SERVER['HTTP_REFERER'], $url)) {
$referrer_is_allowed = true;
}
}
echo $referrer_is_allowed ? 'yes' : 'no';
請記住,這并不能保證任何特定用戶實際上來自HTTP_REFERER您正在檢查的用戶,原因有幾個。
$_SERVER['HTTP_REFERER']很容易被欺騙,并且不能真正信任安全性。
諸如此類的引用者site_not_allowed.com/example.com仍會通過此檢查。
您至少可以通過檢查引薦來源網站是否以允許的網站開頭來保護自己免受第二個問題的影響,如下所示:
foreach($allowed_sites as $url) {
$referrer = str_replace(['http://', 'https://'], ['',''], $_SERVER['HTTP_REFERER']);
if(substr($referrer, 0, strlen($url)) === $url) {
$referrer_is_allowed = true;
}
}
- 1 回答
- 0 關注
- 113 瀏覽
添加回答
舉報