Struts2アプリケーションにTomcatを使用しています。 web.xml
には、以下に示すような特定のエントリがあります。
<security-constraint>
<web-resource-collection>
<web-resource-name>restricted methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>no_access</web-resource-name>
<url-pattern>/jsp/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>no_access</web-resource-name>
<url-pattern>/myrrunner/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
上記のブラックリストパーツをホワイトリストパーツのみを使用するように変更するにはどうすればよいですか。たとえば、PUT
、DELTE
httpメソッドをブラックリストに登録する代わりに、他のメソッドをホワイトリストに登録する必要がありますが、それらをホワイトリストに登録する構文とそれらをホワイトリストに登録する方法。
私の上のweb.xml
スニペット、上記のxml
のホワイト化カウンターパートを提供できる人がいれば感謝します。
編集:また、ソリューションが機能するかどうかを実際にどのように確認しますか?
ありがとう
私は以下を試します:
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<!-- no auth-constraint tag here -->
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>restricted methods</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
最初 security-constraint
はありませんauth-constraint
なので、GETメソッドとPOSTメソッドは、ログインしなくても誰でも利用できます。2番目は、他のすべてのhttpメソッドを制限します(私は試していません)。
Java EE 6の新機能。アプリケーションのセキュリティ設定を簡素化します。web.xmlで許可されたHTTPメソッドに対してホワイトリストとブラックリストの両方を許可できるようになりました。
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable unneeded HTTP methods by 403 Forbidden them</web-resource-name>
<url-pattern>*</url-pattern>
<http-method-omission>GET</http-method-omission>
<http-method-omission>HEAD</http-method-omission>
<http-method-omission>POST</http-method-omission>
</web-resource-collection>
<auth-constraint />
</security-constraint>
参照: https://docs.Oracle.com/cd/E19798-01/821-1841/bncbk/index.html#6nmq2cpkb
受け入れられた回答を少し調整します(url-pattern
2番目のsecurity-constraint
はデフォルトのサーブレットにマッピングします"/"
)はJBossとWeblogicでは機能しますが、Websphereでは機能しません。
<security-constraint>
<web-resource-collection>
<web-resource-name>Allowed methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<!-- no auth-constraint tag here -->
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted methods</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
上記のセキュリティ制約設定では、WebsphereがすべてのHTTPメソッドを許可するのに対し、JBossおよびWeblogicはGET
およびPOST
のみを許可する理由がわかりません。