【问题标题】:How to secure my java web application?如何保护我的 Java Web 应用程序?
【发布时间】:2012-03-29 13:18:19
【问题描述】:

我有一个网络应用程序,当用户登录时,他们会到达mainjsp.jsp 页面。

在此页面中,日期文本框很少,并且根据日期和从另一个下拉列表中的选择提交数据。此数据由servlet 检索并带回mainjsp 页面。

我担心的是安全性。现在,当我复制粘贴 mainjsp.jsp 页面的 URL 并将其粘贴到任何浏览器中时,该页面将按原样显示。我不希望这种情况发生。我希望用户先登录,因此我希望我的 Web 应用程序安全。

我不知道该怎么做。您能告诉我如何实现这一目标吗?

另外请告诉我如何为网络应用程序中的任何页面实现这一点。如果用户没有登录,他们应该无法访问任何页面。

【问题讨论】:

  • 使用一些授权和认证框架,如spring security、JASS等
  • 我不能在这里用 jsp 和 servlets 做点什么吗?我没有在 spring 或 jass 上工作过。或者 cud 你提供了一些细节来查找 spring 来实现这个?
  • 答案中描述的内容将提供基本级别的安全性,但您需要基于角色的安全模型 Spring security 和 JASS 是要走的路。一个好的起点是官方文档。 static.springsource.org/spring-security/site
  • +1 可以在不加注释的情况下反转 -1。但我认为原因是:没有换行符/格式,太宽/主观的问题,以及短信写作(abt,whn,tht,teh)。请尝试在以后更正这些以获得更多高质量的答案

标签: java security jsp servlets authorization


【解决方案1】:

您应该有基于表单的身份验证。这是应该添加到您的 web.xml

的 sn-p
<security-constraint>
    <web-resource-collection>
        <web-resource-name>pagesWitUnrestrictedAccess</web-resource-name>
        <description>No Description</description>
        <url-pattern>*.jsp</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <description>No Description</description>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>


<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/loginerror.jsp</form-error-page>
    </form-login-config>
</login-config>

一些参考资料:

【讨论】:

    【解决方案2】:

    您可以检查Shiro 以使用开箱即用的安全框架并防止网络环境中的高级安全问题。

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      使用会话。 在登录时设置会话变量,并检查您必须确保安全的每个页面。

      【讨论】:

        【解决方案5】:

        当用户输入凭据并将其提交到登录 servlet 时,在会话中添加用户名或用户 ID。检查应用程序标题中的会话属性(在每个页面上),即会话中是否存在用户名或用户 ID?如果是,则将其重定向到请求的页面,否则将用户重定向到 login.jsp。例如:

        String var= null;
        try {
            var= (String) session.getAttribute("user_name_session");
            if (var== null) {
                response.sendRedirect("/Login.jsp");
                return;
            }
        } 
        catch (Exception e) {
            System.out.println(e);
        }
        

        您可以根据需要修改sn-p,这是防止用户通过将链接复制到另一个浏览器来访问任何页面的最简单方法。

        【讨论】:

          【解决方案6】:

          这是将 HTTP 请求转换为 HTTPS 请求的最佳方式

          http://middlewaremagic.com/weblogic/?p=2019

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-03-08
            • 1970-01-01
            • 2014-05-18
            • 2010-12-15
            • 2021-05-17
            • 2023-03-16
            • 1970-01-01
            相关资源
            最近更新 更多