与此类似question我想限制一些 Jersey 网络服务供内部办公室使用。使用 HttpServletRequest 检查 IP 地址是否足够安全?具体来说,是否存在 request.getRemoteAddress() 返回的值不可信的情况?我的代码是这样的:
@POST
@Path("update")
public Response updateCityInfo(@Context HttpServletRequest request) {
String remoteAddress = request.getRemoteAddr();
if (!remoteAddress.startsWith("10.10")) {
return Response.status(Status.FORBIDDEN).build();
}
...
我不太关心安全性,我只是希望某个网络内的任何人都能够访问此端点。
最佳答案
这可能有用。不过,也有一些注意事项。对于初学者来说,如果您位于负载均衡器/代理后面,则远程地址可能是代理的地址,而不是发起请求的客户端的地址。由于负载均衡器通常位于防火墙内部,因此它们可能有一个 10.* 地址。
这似乎应该在防火墙级别处理,而不是在应用程序级别处理。
关于java - 限制 Web 服务访问内部 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20085335/