介绍
在 Apache Web 服务器中,如果您想禁用对特定方法的访问,您可以利用 mod_rewrite 并禁用几乎任何东西,通常只需要一两行配置文件条目。在 Apache Tomcat 中,安全性是通过内置在 Java Servlet 规范中的安全约束来实施的。这些不包含在 tomcat 的主 server.xml 文件中,而是包含在 web.xml 配置文件中。
Java Servlet 规范包含一个相当完整的与安全相关的配置参数集合,其中允许您执行禁用 HTTP 方法、在特定 URI 上启用 SSL 以及允许基于用户角色访问特定资源等操作。安全约束是在基于 Java 的应用程序中保护 Web 内容的方法。在安全相关扫描中出现的一个常见项目是网站或 Web 应用程序中允许的 HTTP 方法。对于我们这些使用 Apache Tomcat 而不是像 Apache 或 IIS 这样的前端 Web 服务器来运行我们的网站的人来说,很好地理解安全约束是如何工作的将是至关重要的。这个特定的 HOWTO 将检查禁用对特定 HTTP 方法的访问所需的步骤。
安全约束使用 xml 语法,就像 web.xml 中的其他配置指令一样。示例中的值以粗体显示以提供更好的可读性。示例 1 是一个基本网站,它只提供 JSP、图像、脚本和样式,并且不包含任何供用户填写的表单。Network Security 希望禁用除 HTTP HEAD 和 GET 请求之外的所有 HTTP 方法。
示例 1 - 基本网站 - 无表单
// Sample Security Constraint
restricted methods
/*
PUT
POST
DELETE
OPTIONS
TRACE
所有约束都以
下面的第二个示例使我们的基本网站示例更进一步,其中提供了“联系我们”表单。站点用户将填写位于 /contact 下的表单,然后使用 HTTP POST 传递数据。
示例 2 - 带有联系表的基本网站
// Sample Security Constraint
restricted methods
/*
PUT
POST
DELETE
OPTIONS
TRACE
Contact Form
/contact/*
PUT
DELETE
OPTIONS
TRACE
此处的约束模仿了上一个示例中的约束,但如果 URI 模式匹配,则会应用第二组约束/contact/*。在这种情况下,允许的方法是 GET、HEAD 和 POST。
结论
安全约束虽然不如 Apache Web 服务器中的那些完整,但却是保护 Web 应用程序的一种非常有用的方法。本 HOWTO 专注于在指定的 URI 上禁用 HTTP 方法,但您可以在安全约束方面做更多事情,未来的文章将介绍这些内容。



