在服务器端表单提交处理程序中检查referer是一个好习惯吗?

时间:2015-11-12 05:32:09

标签: java security spring-mvc csrf

我正在做一个Java网站。我希望网站更安全。

在我的网站上,所有表格都应该(按设计)通过我网站上的GET链接在页面中打开。我希望检查引用者是否是我的服务器端表单提交处理程序中的网站。我们的想法是避免从攻击者 - 本地生成的表单提交中获取数据。

我觉得这种方法的关键在于服务器检测到的引用是否可靠。

据我所知,还有其他方法可以提高安全性。让我们专注于我的帖子中的方法。

感谢您的任何意见!

更新

具体来说,我正在做一个Spring MVC网站。我正在使用拦截器检查所有流量,尤其是表单提交。

2 个答案:

答案 0 :(得分:4)

不,它不可靠。某些浏览器可能允许删除引用者,或者可能根本不发送引用者。一个顽皮的人可以很容易地将引用者添加到请求中,因此除了随机的人尝试随机事物之外,它本身不会提供任何额外的安全性。

答案 1 :(得分:2)

不是最好的方法,但是referer checking can help prevent Cross Site Request Forgery attacks

  

虽然自己欺骗referer标头是微不足道的   浏览器,在CSRF攻击中不可能这样做。检查   referer是一种防止嵌入式CSRF的常用方法   网络设备,因为它不需要每用户状态。

     

[剪断]

     

...检查引用者被认为是CSRF的弱者   保护。例如,可以使用打开的重定向漏洞   利用受引用检查和保护的基于GET的请求   某些组织或浏览器工具会将引荐来源标头删除为表单   数据保护。

请记住,攻击者不是坐在键盘上的那个人 - 他们更难以欺骗受害者的机器。

阻止CSRF的最有效方法是Synchronizer Token Pattern