我有一个 Java Web 应用程序,它有一个入口点 URL,并且一个外部 Web 应用程序重定向到该 URL。我可以在服务器端使用 cookie 或其他方式检查请求是否来自特定域?
编辑: 我无法更改外部应用程序代码
我认为您想知道 HTTP Referer(“调用”您的页面的 URL):
String referrer = request.getHeader("referer");
编辑
我忘记了,正如gustafc所说,HTTP 引荐来源网址是客户端控制的值,可以欺骗完全不同的东西,甚至被客户端删除,因此您无法确定您的 HTTP 引荐来源网址不是假值
您可以检查HTTP referer,但它不可靠:它很容易伪造,并且有些人出于隐私原因选择禁用 referer。因此,虽然它可能在大多数情况下都有效,但不要依赖它来解决安全或其他基本问题。
尝试这样做的真正原因是什么?
是的。您可以从请求对象中的方法getRemoteHost()
或方法获取请求的来源。getRemoteAddr()
http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#getRemoteHost()
如果您只需要验证请求是否来自特定 IP(或 IP 范围),您可以在防火墙上配置一条规则来支持这一点(假设代理在防火墙内。