从您的示例看来,您已经结合了您引用的两篇文章中的内容。
Geekflare.com article 给出了这个 Apache 的例子:
Header always append X-Frame-Options SAMEORIGIN
Garron.me article 给出了这个 Apache 的例子:
<filesMatch ".(html|htm)$">
Header set Cache-Control "max-age=14400, must-revalidate"
</filesMatch>
在我看来,ColdFusion 页面上的 X-Frame-Options 标头会转化为这个:
<filesMatch ".(cfml|cfm)$">
Header always append X-FRAME-OPTIONS SAMEORIGIN
</filesMatch>
请注意,正则表达式中没有前导斜杠 \,就像您的代码中一样,SAMEORIGIN 周围不需要引号,并且您省略了 always 关键字。您还有一个额外的<ifModule mod_headers.c> 支票,我认为您不需要。我会将 ColdFusion 和 HTML 扩展结合到<filesMatch ".(cfml|cfm|html|htm)$"> 这样的条件中,以便为这些页面请求发送标头。
我只是从您引用的文章中了解到这一点,但您已使用 ColdFusion 标记了您的问题,因此有多种选择。事实上,后来的 ColdFusion 版本(我相信它是在版本 10 中引入的)提供了一些开箱即用的保护。您可以对其进行自定义以满足您的需求。请参阅本文的“ClickJacking”部分 - Security improvements in ColdFusion 10
来自该文档:
ColdFusion 管理员使用 X-Frame-Options 防止点击劫持。您还可以进一步扩展此选项以保护您的应用程序,如下所示:
打开位于<Server-doc-root>/WEB-INF的Web.xml文件。
使用已指定的两个过滤器之一为您的应用程序添加 URL 过滤器映射:CFClickJackFilterSameOrigin 或 CFClickJackFilterDeny。
现在假设您有一个应用程序testClick,您想通过拒绝应用程序的框架来防止点击劫持。为此,请在 web.xml 文件中添加以下内容。
<filter-mapping>
<filter-name>CFClickJackFilterDeny</filter-name>
<url-pattern>/testClick/*</url-pattern>
</filter-mapping>
从我的一台服务器查看web.xml 文件包括以下内容(注意他们如何为 ColdFusion 管理员添加保护):
<!-- CF ClickJacking deny protection Filter -->
<filter>
<filter-name>CFClickJackFilterDeny</filter-name>
<filter-class>coldfusion.bootstrap.BootstrapFilter</filter-class>
<init-param>
<param-name>filter.class</param-name>
<param-value>coldfusion.filter.ClickjackingProtectionFilter</param-value>
</init-param>
<init-param>
<param-name>mode</param-name>
<param-value>DENY</param-value>
</init-param>
</filter>
<!-- CF ClickJacking same origiin protection Filter -->
<filter>
<filter-name>CFClickJackFilterSameOrigin</filter-name>
<filter-class>coldfusion.bootstrap.BootstrapFilter</filter-class>
<init-param>
<param-name>filter.class</param-name>
<param-value>coldfusion.filter.ClickjackingProtectionFilter</param-value>
</init-param>
<init-param>
<param-name>mode</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>
<!-- CF ClickJacking Filter mapppings starts. For ColdFusion Administrator we are allowing
sameorigiin frames. Use Deny or some other mode of this filter as appropriate for the
application and add required url pattern
-->
<filter-mapping>
<filter-name>CFClickJackFilterSameOrigin</filter-name>
<url-pattern>/CFIDE/administrator/*</url-pattern>
</filter-mapping>
<!-- End CF ClickJacking Filter mappings -->
因此,为了保护您的整个 ColdFusion 站点,您可以为站点的根目录添加一个 filter-mapping /*。
<filter-mapping>
<filter-name>CFClickJackFilterSameOrigin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
您甚至可以使用 <cfheader> 标记来包含响应标头(但您必须在所有页面或 Application.cfc 等中执行此操作)
<cfheader name="X-FRAME-OPTIONS" value="SAMEORIGIN" />