问题 - 我们正在JBoss AS中的Windows上部署Web应用程序。使用默认页面可以干净地访问应用程序:
https://server:8443/app/
用户登录并进行身份验证,然后在应用程序中运行。但是,我们确实有一些用于渲染页面的Web工件(图像,JS文件等)。因此,如果用户知道正确的路径,用户可能会绕过身份验证并直接访问这些工件:
https://server:8443/app/img/image.jpg
有没有办法保护这些文物?由于它绕过我们的主servlet,我们似乎没有任何访问阻止未经身份验证的访问,但实际上我们不希望任何人访问这些工件,只有Web应用程序作为其处理的一部分。我们已经进行了渗透测试以允许此访问。
提前致谢,对不起,如果这是一个简单的问题,我只是不知道答案!
答案 0 :(得分:0)
如果您使用声明式安全性,那么只需将安全性约束放到web.xml
即可。要保护webapp中的所有内容,您可以使用类似:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protect all data</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>User</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Secured area</realm-name>
</login-config>
在Anil's article或Java EE tutorial
中详细了解相关信息如果以编程方式处理安全性,则可以使用servlet过滤器,该过滤器将映射到所有URL(即图像)。
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>