假設我想限制發佈請求以僅處理來自我自己的域的請求,我如何才能使用$ _SERVER ['HTTP_REFERER']來檢查引用者,我讀取的是($_SERVER documentation),可以不被信任?如何獲得真正的引用者?
0
A
回答
2
這是不可能的,不幸的是,檢查引用鏈接的唯一方法是瀏覽器提供了這些信息,顯然這些信息可以改變以使讀者受益。
但是,您可以創建一個用戶會話或cookie來保存一個變量,以顯示該用戶訪問過該網站。如果該會話變量已定義,則只能允許用戶查看帖子。
另一種選擇是根據用戶的IP地址生成鏈接,只有當他們點擊了專門生成的鏈接時才允許訪問它們。您可以從數據庫中保存用戶IP地址和唯一密鑰開始,然後所有內部鏈接都可以使用具有唯一ID的GET變量。如果頁面打開時沒有真正的ID,那麼您可能會顯示一條錯誤消息。
1
如果它來自您自己的域名,您可以設置cookie或使用會話變量將用戶標記爲位於您的網站上。然後,如果發送提交,並且用戶缺少驗證值,則您知道可以拒絕該提交(或者如果它存在,則接受它)。
1
除了Cameron's answer:
您還可以使用防止cross-site request forgeries的相同機制。即不僅要設置一個會話變量來指示用戶訪問了您的網站,而且還要爲表單添加一個必須與會話數據中的值匹配的密鑰。一些框架爲此提供支持,例如Zend_Form_Element_Hash
相關問題
- 1. 如何獲得真正的JPanel大小?
- 2. 如何獲得真正的mac地址?
- 3. 如何獲得真正的隨機數?
- 4. 如何獲得真正的iframe身高?
- 5. arguments.callee.caller ...如何獲得調用者對象的'this'引用?
- 6. 如何使用HttpWebRequest類獲得真正的多響應
- 7. 如何使用JQuery獲得真正的圖像高度?
- 8. 如何在ASP.NET MVC應用程序中獲得「真正的」HttpContext?
- 9. 如何在使用UpdatePanel時獲得真正的異常消息?
- 10. 如何使用openGL獲得真正流暢的移動對象
- 11. 如何獲得ImageView真正佔用的寬度android
- 12. 如何使用Log4Net從NHibernate獲得真正的SQL
- 13. 我如何獲得真正可用的分辨率
- 14. GiST索引如何真正起作用?
- 15. 制定者和獲得者是否真的打破了SRP?
- 16. Scrapy - 如何獲得重複請求,引用者
- 17. Typescript:我如何得到真正的「this」
- 18. 如何獲得真正的圖像顯示的CSS屬性
- 19. 如何從Java中的懶惰Bean獲得真正的className
- 20. 如何獲得XmlNode的「真正的」ChildNodes,忽略空白節點?
- 21. Django的CMS:如何獲得真正的頁ID
- 22. 如何從URI獲得真正的路徑android棒棒糖
- 23. React - 組件更新後如何獲得真正的DOM元素
- 24. 我如何獲得註冊碼的真正路徑?
- 25. 如何在運行fluent-mongo時獲得「真正的」mongo查詢
- 26. 如何獲得真正的解密文本
- 27. 如何才能在Ubuntu上獲得真正的屏幕大小?
- 28. 如何通過requirejs獲得真正的錯誤?
- 29. 如何設置RegExp以獲得真正的匹配判斷?
- 30. 如何獲得真正的屏幕高度和寬度?
來自您自己的域的頁面會更新一個cookie,並留下頁面的標識。在頁面加載時檢查cookie中的值。也許你需要將它與當前會話聯繫起來。 – 2012-04-18 15:07:28