【发布时间】:2013-12-03 19:40:16
【问题描述】:
与question 类似,我想限制一些 Jersey Web 服务供内部办公室使用。使用 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();
}
...
我不太关心安全性,我只是希望某个网络中的任何人都能够访问此端点。
【问题讨论】:
-
这个检查似乎没有问题。可能更好的地方是负载均衡器级别,它将过滤掉所有外部 IP 地址。
-
没有负载均衡器,它只是用于开发和质量检查服务器,将从某人的框中调用以进行一些配置重新加载。我只是想确保它不会被我们本地网络之外的任何人调用。
-
即使没有负载平衡器,您的所有服务器后面也必须有一些防火墙,可以限制对外部 IP 的访问。您也可以配置 apache 来阻止 IP,我主要关心的是您的应用程序应该只执行所需的东西(身份验证/自动化/角色/权限等)和其他与业务相关的东西),阻塞和解除阻塞是基于 Infra 的服务,您的应用程序应该不照顾。
-
是的,同意,但另一件事是我只想限制其中一些服务,而不是其他服务。
-
我猜你的每个服务都会有一些唯一/不同的 URL,所以只允许基于服务 URL 的访问。
标签: java web-services security