1

私は、さまざまなサーブレットと JSP で構成される Java Web アプリを持っています。例: コントローラー サーブレット/controller?abc=123&xyz=567、その他のサーブレット/showDocument?docid=55、および JSP への直接アクセス/userDetails.jsp.

すべてへのアクセスを防止するために Web セキュリティを有効にし (以下を参照) login.jsp、css ファイルにリンクするページがあります/styles.css

URL にアクセスすると、login.jsp ページにリダイレクトされます。

問題は次のとおりです。

(1) ログイン ページで CSS スタイルが使用されていません。これstyles.cssはおそらく、保護されたリソースと見なされ、まだログインしていないためです。

(2) ユーザー名とパスワードを使用して正常にログインすると、style.css ファイル (ブラウザーにプレーン テキストとして表示されます) に移動します。これは、css ファイルへの LINK が要求された最新の保護さ​​れたリソースであると見なされているためだと思います。

CSS コンテンツをコピーして JSP に貼り付けると、両方の問題は解消されますが、CSS は style.css と login.jsp の 2 つの場所にあります。

これを修正するにはどうすればよいですか? *.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 に答える