我有jsp / struts应用程序需要升级。
目前我们只有1个网络系统(分支),现在我需要升级并构建另一个代表HQ的网络系统。 HQ和分支是不同的域。 HQ可以在HQ页面中看到4个分支。我们需要登录才能访问HQ和分支机构。如果总部想要查看分支A中的详细信息,我们可以点击链接,例如
Total attack : <a href="https://www.branch_A.com/xxx/sss/?sss=333">105</a>
我的问题是如何保护URL,以便只能通过HQ和branch_A.com服务器安全地进行通信?如果我们使用来自其他IP的URL,则应显示未经授权的消息。
我已经完成了在分支中使用request.getRemoteAddr()
来控制IP,但它不够安全。
有人可以帮我提出如何保护这个网址的想法吗?
答案 0 :(得分:2)
我们需要登录
所以你已经有了一个登录系统。正如您已经提出这个问题,它听起来像是一个自行开发的登录系统,否则您可能只是配置了容器管理的身份验证来检查任何已登录用户/角色的某些URL模式。
您基本上只需要在请求特定网址格式时检查登录用户。过滤器非常适合这种情况。假设您的自行开发的登录系统将登录用户放入会话范围,那么Filter只需要测试它的存在:
if (((HttpServletRequest) request).getSession().getAttribute("user") != null) {
chain.doFilter(request, response); // User is present. Just continue request.
} else {
((HttpServletResponse) response).sendError(HttpServletResponse.SC_UNAUTHORIZED); // Error 401.
}
在web.xml
上将此过滤器映射到url-pattern
上,与您要在登录用户上过滤的请求相匹配。您甚至可以通过添加用户角色以及登录用户是否具有访问URL的正确角色来更进一步。
答案 1 :(得分:1)
使用.htaccess来限制传入的IP?或在httpd.conf /虚拟主机中配置。甚至防火墙?
喜欢:
order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
allow from all
答案 2 :(得分:0)