与此question类似,我有一些泽西网络服务,我想限制内部办公室使用。使用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();
}
...
我不太关心安全性,我只是希望某个网络内的任何人能够访问此端点。
答案 0 :(得分:0)
这可能有用。但是有一些警告。对于初学者,如果您位于负载均衡器/代理之后,则remoteAddress可能是代理的,而不是发起请求的客户端。由于负载均衡器通常位于防火墙内部,因此它们可能具有10. *地址。
这似乎应该在防火墙级别处理,而不是在应用程序级别处理。
答案 1 :(得分:0)
在网络级别过滤来自外部地址的来电请求可以轻松防止您的应用被欺骗。但这并不意味着您的应用程序在安全性方面没有做任何事情。您的应用程序应具有适当的身份验证和授权机制。