編輯:看起來我對CSRF實際上是什麼感到困惑。我改寫的問題防止CSRF和防止垃圾郵件製造者
-
所以我知道有一噸大約防止CSRF的職位,但有這麼多的方法來繞過常見的方法:
CSRF令牌 - 設置一個CSRF令牌的形式,分配使用相同的數據一個cookie,並在服務器端
檢查useragents匹配它 - 確保所有的請求有一個有效的用戶代理的簡單方法。輕鬆繞過但簡單檢查仍然
基於IP的限制 - 根據請求者的IP地址限制請求。
-
但是,這都是可以容易繞過!還有什麼可以做,以防止這種事情?除了CAPTCHA之外的任何內容。
比方說,一個URL縮短樣本點。
- 用戶提交請求 - >返回縮短的URL。
- 的引用者是有效的(從原始形式)的腳本檢查 - 可以很容易地欺騙基於IP地址
- 檢查 - 代理解決此
- 檢查很容易得到CSRF令牌 - 垃圾郵件發送者可以很容易地繞過此首先訪問始發站點,並使用一套餅乾+令牌請求到現場
我只是不確定還有什麼可以做的?即使JavaScript是明智的,可以做些什麼來防止這種情況?爲cookie分配超時值可能有效,但垃圾郵件發送者只需通過訪問原始頁面將cookie重新分配給自己。
別的東西可以做,是顯示CAPTCHA的垃圾郵件發送者,如果請求的速度是高於平均水平。但我想要一些不會標記有效用戶的東西。是的,強迫用戶必須註冊一個帳戶才能解決這個問題,但不可行。
謝謝!
你似乎在這裏混淆你的目標。你想阻止跨網站請求*僞造*,或者你想阻止*機器人*?這是兩個不同的事情,只有少量的重疊。 – Charles
Both!垃圾郵件發送者從遠程服務器(CSRF)發送請求。我會稍微回答一下這個問題。謝謝。 – Prash
我想你可能會混淆你的術語。 CSRF是* exploit *,惡意用戶通過該漏洞欺騙合法用戶進行非法請求。這聽起來像你真的只對預防機器人和非法用戶感興趣。這不是CSRF,這只是機器人保護。 – Charles