代码之家  ›  专栏  ›  技术社区  ›  Joe Ijam

保护URL的最佳方法,以便只有定义的参与方可以相互作用

  •  1
  • Joe Ijam  · 技术社区  · 15 年前

    我有JSP/Struts应用程序需要升级。

    目前我们只有一个websystem(branch),现在我需要升级并构建另一个代表hq的websystem。总部和分支机构是不同的领域。总部可以在总部页面看到4个分支机构。我们需要登录才能访问总部和分支机构。如果总部希望在分支机构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() 但它不够安全。

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

    3 回复  |  直到 15 年前
        1
  •  2
  •   BalusC    15 年前

    我们需要登录

    所以你已经有了一个登录系统。正如您已经在问这个问题一样,它听起来像是一个自行开发的登录系统,否则您可以配置容器管理的身份验证来检查任何登录用户/角色的特定URL模式。

    基本上,只要请求特定的URL模式,就需要检查登录的用户。一个过滤器非常适合这个。假设您自己的登录系统将登录的用户放在会话范围内,那么过滤器只需测试其存在:

    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的正确角色来更进一步。

        2
  •  1
  •   joetsuihk    15 年前

    使用.htaccess限制传入IP?或在httpd.conf/virtual host中配置。甚至防火墙?

    某物:

    order allow,deny    
    deny from 123.45.6.7
    deny from 012.34.5.
    allow from all
    
        3
  •  0
  •   Quentin    15 年前

    我将研究使用客户机(和服务器)SSL证书。下面有做这件事的指南 Apache IIS (或使用搜索引擎搜索您设置的任何内容)