1

我有一个 Java Web 应用程序,它由各种 servlet 和 JSP 组成——例如:控制器 servlet /controller?abc=123&xyz=567、其他一些 servlet /showDocument?docid=55,以及一些对 JSP 的直接访问/userDetails.jsp

我启用了网络安全以阻止对所有人的访问(如下所示),并且我有一个login.jsp链接到 css 文件的页面/styles.css

当我访问任何 URL 时,我被重定向到 login.jsp 页面。

问题是:

(1) 登录页面上没有使用 CSS 样式,可能是因为它styles.css被认为是受保护的资源,而我还没有登录。

(2) 使用用户名和密码成功登录后,我被定向到 style.css 文件(在浏览器中显示为纯文本)。我猜这是因为指向 css 文件的 LINK 被认为是最近请求的受保护资源,所以它假设这就是我想要去的地方。

如果我将 CSS 内容复制并粘贴到我的 JSP 中,这两个问题都会消失,但是我在两个地方都有 CSS,style.css 和 login.jsp。

我该如何解决?有没有办法让我将 *.css 文件列入“白名单”,以免它们受到保护。我是否必须为要保护的特定类型定义不同的安全约束?

这是我的 web.xml 中的当前安全约束:

<security-constraint>
  <display-name>name</display-name>
  <web-resource-collection>  
    <web-resource-name>Restricted</web-resource-name>
    <url-pattern>/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>APP_USER</role-name>
  </auth-constraint>
  <user-data-constraint>
    <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
</security-constraint>

这就是我在我的 JSP 中链接到 CSS 的方式:

<head>
  <LINK REL=StyleSheet HREF="styles.css" TYPE="text/css" MEDIA="screen" />
</head>

任何帮助是极大的赞赏!

4

1 回答 1

3

保护好所有内容后,您可以禁用 css 和图像的安全性

<security-constraint>
  <display-name>name</display-name>
  <web-resource-collection>  
    <web-resource-name>Restricted</web-resource-name>
    <url-pattern>/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>APP_USER</role-name>
  </auth-constraint>
  <user-data-constraint>
    <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
</security-constraint>
<security-constraint><!--Exclude css and images here -->
   <web-resource-collection>
      <web-resource-name>Exclude from Security</web-resource-name>
      <url-pattern>/images/*</url-pattern><!-- No security for images -->
      <url-pattern>/css/*</url-pattern><!-- No security for css -->
   </web-resource-collection>
</security-constraint>
于 2012-06-07T17:03:52.087 回答