我有一个Java Web应用程序,带有一个入口点URL,外部Web应用程序重定向到该URL。我可以在服务器端检查请求是否来自使用cookie等特定域的请求吗?我可以验证HTTP请求的域名吗?
编辑: 我不能改变外部应用程序代码
我有一个Java Web应用程序,带有一个入口点URL,外部Web应用程序重定向到该URL。我可以在服务器端检查请求是否来自使用cookie等特定域的请求吗?我可以验证HTTP请求的域名吗?
编辑: 我不能改变外部应用程序代码
我想你想知道HTTP引用(URL中的 “称” 你的页面):
String referrer = request.getHeader("referer");
编辑
我忘了,因为gustafc表示,HTTP引用是一个客户端控制的值,并且可能被欺骗到完全不同或甚至被客户端删除的内容,因此您无法确定您的HTTP Referrer是否不是假值
是的。您可以在请求对象中获取来自getRemoteHost()
或getRemoteAddr()
方法的请求的来源。
http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#getRemoteHost()
对我来说不是一个合适的解决方案,因为'getRemoteHost()'返回最后一个代理,而不是重定向发起者 – 2013-02-20 13:24:11
某些代理通过原始客户端IP作为头文件,例如Apache mod_proxy使用'X-Forwarded-For' – johnstok 2013-02-20 14:00:56
您可以检查HTTP referer,但它是不可靠的:它很容易假的,有些人选择禁用隐私的原因参照网址。因此,虽然它可能在大多数情况下都有效,但不要将其用于安全性或其他重要问题。
什么是real尝试这样做的原因是什么?
如果你只需要验证请求是从一个特定的IP(或IP范围),你可以在你的防火墙配置规则,以支持(假设代理是在防火墙内。
你可以改变 – PbxMan 2013-02-20 13:06:50