在服务器端表单提交处理程序中检查引用是一个好习惯吗?
Is it a good practice to check referer in the server-side form submission handler?
我正在做一个 Java 网站。我希望使网站更安全。
在我的网站中,所有表单都应该(按设计)通过我网站上的 GET link 在页面中打开。我希望在我的服务器端表单提交处理程序中检查 referer 是否是我的网站。这个想法是为了避免从攻击者本地生成的表单提交中获取数据。
我觉得这种方式的关键在于服务器检测到的referer是否可靠。
我知道还有其他方法可以提高安全性。让我们只关注我 post.
中的方法
感谢任何意见!
更新
具体来说,我正在做一个 Spring MVC 网站。我正在使用拦截器检查所有流量,尤其是表单提交。
不,它不可靠。某些浏览器可能允许删除引荐来源网址,或者可能根本不发送它。一个顽皮的人可以轻松地将推荐人添加到请求中,因此它本身不会提供任何额外的安全性,除非随机的人尝试随机的事情。
不是最好的方法,但是 referer checking can help prevent Cross Site Request Forgery attacks:
Although it is trivial to spoof the referer header on your own
browser, it is impossible to do so in a CSRF attack. Checking the
referer is a commonly used method of preventing CSRF on embedded
network devices because it does not require a per-user state.
[snip]
...checking the referer is considered to be a weaker from of CSRF
protection. For example, open redirect vulnerabilities can be used to
exploit GET-based requests that are protected with a referer check and
some organizations or browser tools remove referrer headers as a form
of data protection.
请记住,攻击者不是坐在键盘前的那个人——他们很难从受害者的机器上欺骗 referer。
不过,防止 CSRF 的最强方法是 Synchronizer Token Pattern。
我正在做一个 Java 网站。我希望使网站更安全。
在我的网站中,所有表单都应该(按设计)通过我网站上的 GET link 在页面中打开。我希望在我的服务器端表单提交处理程序中检查 referer 是否是我的网站。这个想法是为了避免从攻击者本地生成的表单提交中获取数据。
我觉得这种方式的关键在于服务器检测到的referer是否可靠。
我知道还有其他方法可以提高安全性。让我们只关注我 post.
中的方法感谢任何意见!
更新
具体来说,我正在做一个 Spring MVC 网站。我正在使用拦截器检查所有流量,尤其是表单提交。
不,它不可靠。某些浏览器可能允许删除引荐来源网址,或者可能根本不发送它。一个顽皮的人可以轻松地将推荐人添加到请求中,因此它本身不会提供任何额外的安全性,除非随机的人尝试随机的事情。
不是最好的方法,但是 referer checking can help prevent Cross Site Request Forgery attacks:
Although it is trivial to spoof the referer header on your own browser, it is impossible to do so in a CSRF attack. Checking the referer is a commonly used method of preventing CSRF on embedded network devices because it does not require a per-user state.
[snip]
...checking the referer is considered to be a weaker from of CSRF protection. For example, open redirect vulnerabilities can be used to exploit GET-based requests that are protected with a referer check and some organizations or browser tools remove referrer headers as a form of data protection.
请记住,攻击者不是坐在键盘前的那个人——他们很难从受害者的机器上欺骗 referer。
不过,防止 CSRF 的最强方法是 Synchronizer Token Pattern。