【发布时间】:2012-09-19 09:18:07
【问题描述】:
我有一个在 Tomcat 中运行的 Java servlet 应用程序,出于安全原因,我只希望能够从机器本身(或者我自己的电脑)运行一个管理命令。因此,为了强制执行此操作,我检查了我收到的 HttpServletRequest 的远程地址,但 即使请求不是来自本地主机,它也总是返回 127.0.0.1
为什么会这样,我可以修复它还是有另一种方法可以仅从服务器运行我的管理命令。
【问题讨论】:
-
您能否粘贴一些代码并说明您要在哪里执行此检查?
-
在它运行的机器(例如 nginx)上的 tomcat 前面是否有东西转发请求?尝试查看“X-Forwarded-For”标题。
-
@Jonas Adler,谢谢,是的,当我从服务器运行而不是我的 homepc 时,x-forwarded-for 的值是不同的(尽管我从家用 pc 运行时的值与我的家用 pc 不匹配ipaddress) 所以我想我应该检查 x-forwarded-for 值并限制对我的服务器机器的访问。
-
@Robert Sever 我在我的主要(也是唯一的)Servlet 中进行检查,该 Servlet 在我的 web.xml servlet-mapping 部分中引用。
-
“X-Forwarded-For”标头由将请求转发到您的服务器(代理、负载均衡器)的实例设置。尝试找出是什么转发了您的请求。
标签: java security servlets httprequest