假设我想限制发布请求以仅处理来自我自己的域的请求,我如何才能使用$ _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. 如何获得真正的随机数?
- 2. 如何获得真正的JPanel大小?
- 3. 如何获得真正的mac地址?
- 4. 如何获得真正的iframe身高?
- 5. arguments.callee.caller ...如何获得调用者对象的'this'引用?
- 6. 如何在ASP.NET MVC应用程序中获得“真正的”HttpContext?
- 7. 我如何获得真正可用的分辨率
- 8. 如何使用openGL获得真正流畅的移动对象
- 9. 制定者和获得者是否真的打破了SRP?
- 10. Scrapy - 如何获得重复请求,引用者
- 11. 如何在WatchService中获得真正的路径
- 12. 如何获得std :: map的真正分配器?
- 13. 如何在Java中获得真正的字符串高度?
- 14. 如何在Rails中获得真正的after_destroy?
- 15. 如何在数学函数获得真正的价值
- 16. 如何在dotcloud上获得真正的客户端ip?
- 17. 如何获得真正的周期性极性表面ggplot
- 18. 如何在Windows上获得真正的iOS浏览器模拟?
- 19. 如何在Git中获得真正的配置值?
- 20. 如何在系统运行时获得真正的CPU频率?
- 21. 如何从CSSStyleDeclaration对象获得真正的CSS属性名称?
- 22. 如何设置RegExp以获得真正的匹配判断?
- 23. 如何在Python中获得numpy数组的真正维度?
- 24. 我如何获得注册码的真正路径?
- 25. 如何获得真正的根网址在PHP(无框架)
- 26. 如何在c#中获得真正的操作系统版本?
- 27. 如何获得真正的方法名称而不是.ctor?
- 28. 如何获得偏移标记的真正中心点
- 29. 如何在java中获得真正的unix时间戳
- 30. 如何获得真正的HttpServletRequest和响应,servlet编程
来自您自己的域的页面会更新一个cookie,并留下页面的标识。在页面加载时检查cookie中的值。也许你需要将它与当前会话联系起来。 – 2012-04-18 15:07:28