保护网址的最佳方式,以便只有定义的方可以互相交互

时间:2010-01-22 09:29:11

标签: java jsp encryption servlets https

我有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,但它不够安全。

有人可以帮我提出如何保护这个网址的想法吗?

3 个答案:

答案 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)

我会考虑使用客户端(和服务器)SSL证书。在ApacheIIS下可以执行此操作(或使用搜索引擎进行任何设置)