我正在做一个Java网站。我希望网站更安全。
在我的网站上,所有表格都应该(按设计)通过我网站上的GET链接在页面中打开。我希望检查引用者是否是我的服务器端表单提交处理程序中的网站。我们的想法是避免从攻击者 - 本地生成的表单提交中获取数据。
我觉得这种方法的关键在于服务器检测到的引用是否可靠。
据我所知,还有其他方法可以提高安全性。让我们专注于我的帖子中的方法。
感谢您的任何意见!
更新
具体来说,我正在做一个Spring MVC网站。我正在使用拦截器检查所有流量,尤其是表单提交。
答案 0 :(得分:4)
不,它不可靠。某些浏览器可能允许删除引用者,或者可能根本不发送引用者。一个顽皮的人可以很容易地将引用者添加到请求中,因此除了随机的人尝试随机事物之外,它本身不会提供任何额外的安全性。
答案 1 :(得分:2)
不是最好的方法,但是referer checking can help prevent Cross Site Request Forgery attacks:
虽然自己欺骗referer标头是微不足道的 浏览器,在CSRF攻击中不可能这样做。检查 referer是一种防止嵌入式CSRF的常用方法 网络设备,因为它不需要每用户状态。
[剪断]
...检查引用者被认为是CSRF的弱者 保护。例如,可以使用打开的重定向漏洞 利用受引用检查和保护的基于GET的请求 某些组织或浏览器工具会将引荐来源标头删除为表单 数据保护。
请记住,攻击者不是坐在键盘上的那个人 - 他们更难以欺骗受害者的机器。
阻止CSRF的最有效方法是Synchronizer Token Pattern。