java - 登录我的 Java Web 应用程序时,我被定向到登录表单使用的 CSS,如何解决这个问题?

标签 java security web web.xml security-constraint

我有一个 Java 网络应用程序,它由各种 servlet 和 JSP 组成——示例:controller servlet /controller?abc=123&xyz=567,一些其他 servlets /showDocument? docid=55,和一些直接访问 JSPs,/userDetails.jsp

我已启用网络安全以防止访问所有内容(如下所示),并且我有一个链接到 css 文件 /styles.csslogin.jsp 页面。

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

问题是:

(1) 登录页面没有使用 CSS 样式,可能是因为 styles.css 被认为是 protected 资源,我还没有登录。

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

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

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

这是我的 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>

非常感谢任何帮助!

罗布

最佳答案

您可以在保护所有内容后禁用 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>

关于java - 登录我的 Java Web 应用程序时,我被定向到登录表单使用的 CSS,如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936396/

相关文章:

ruby-on-rails - 如何嵌入Haml的错误::Engine in a web page in production on Heroku

java - 将 Kundera 与 Cassandra 一起使用时 JPA 的连接类型?

Java HttpServlet 没有从 backbone.js 获取 GET/POST

java - 非最终静态字段的静态初始化安全吗?

Java远程类加载安全吗?

python - Flask:重定向不存在的 URL

java - Spring 3 对象与原始数据类型的绑定(bind)列表

php - Zend Framework 管理模块结构

java - 将 J2EE 网站中发生的错误(异常)映射到合适的错误消息的有效方法是什么?

.net - 在 IIS 和 <default document> 上使用 HTML5mode(true) 的 AngularJS