【问题标题】:How can i secure a web application? [closed]如何保护 Web 应用程序? [关闭]
【发布时间】:2023-03-16 03:56:01
【问题描述】:

我有一个 Web 应用程序 (JSP),我需要限制访问,因此只有登录的用户才能看到该应用程序。我看了看,发现了许多不同的方法。有人说要使用 cookie、会话或框架,例如 Spring Security。
我应该使用什么?到目前为止,我在 java 和 jsp 编程方面有中等经验,那么您建议我做什么?
非常感谢!

【问题讨论】:

    标签: spring security jsp spring-security


    【解决方案1】:

    我建议直接使用它,而不是准备自制版本的 Spring Security。考虑以下优点:

    • 将来如果您需要一些新的安全功能,那么您可以打开它们,而不是从零开始开发它们(例如 LDAP 身份验证、SSO 等)
    • 新开发人员有可能已经熟悉您的安全框架(另一方面,它肯定不会熟悉您的自制实验室)
    • 他们中的大多数都有很好的文档,所以当我们谈论基本的 URL 授权时,学习的机会很小(您有足够的时间为您的自制库准备相同级别的文档吗?)。
    • 它们具有针对会话固定等攻击的内置支持。
    • 它们有多个扩展点,因此您将不受框架的限制(您将能够添加/修改必要的功能)。
    • 它们具有模块化结构,您不需要加载所有模块/了解它们。只使用你需要的东西。

    检查Apache ShiroSpring Security 可能对您有用。

    对于 Spring Security,如果您从 here 开始阅读官方文档,那么您可以在不到 30 分钟的时间内为基本 URL 授权(在 conf 中使用硬编码用户)准备所有 conf。然后,您需要在类路径中包含相应的 jar(用于 Spring 和 Spring Security),仅此而已。打开org.springframework.security 的调试日志以查看发生了什么。

    【讨论】:

      【解决方案2】:

      考虑使用 servlet 过滤器。将登录用户存储在会话中,并配置过滤器以检查用户在尝试访问您网站的安全目录时是否已登录(通过 url-pattern)。

      这里是http://www.tutorialspoint.com/jsp/jsp_writing_filters.htm的基本信息。

      但这里有一些更具体的内容可以帮助您入门。

      创建一个实现 javax.servlet.Filter 的类,覆盖 doFilter 方法并检查用户是否已登录并使用注释配置 urlPatterns。

      过滤器上的注释是这样的:

      @WebFilter(filterName="LoggingFilter", urlPatterns={"/secured/*"})
      

      您希望保护的目录称为“安全”。

      在类中重写doFilter()方法并检查用户是否登录:

      User user = session.getAttribute("user");
      if (user != null) {
          chain.doFilter(request, response); // User is logged in so forward response.
      } else {
          response.sendRedirect("login"); // User not logged in so redirect to login page.
      }
      

      这是将登录用户限制在网站指定部分的有效方法。这个简单的示例可以扩展为根据用户类型或其他标准限制对网站不同部分的访问。

      【讨论】:

      • 谢谢,非常有用的信息。所以,你建议不要使用像 Spring Security 这样的框架来做到这一点@Alex Theedom
      • Spring Security 在引擎盖下是一样的。它通过 servlet 过滤器拦截 HTTP 请求。与上面相同,但 Spring Security 具有更多配置,因此更复杂。您做出的选择取决于一系列相互关联的因素。上面的选项简单且易于实现,而 Spring Security 更复杂,可能超出您的项目所需。虽然如果您已经在使用 Spring,那么使用 Spring Security 是有意义的。
      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2016-11-03
      相关资源
      最近更新 更多