首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.htaccess文件中添加“X帧选项”头部以防止'ClickJacking‘攻击

如何在.htaccess文件中添加“X帧选项”头部以防止'ClickJacking‘攻击
EN

Stack Overflow用户
提问于 2017-02-21 16:09:50
回答 2查看 13.8K关注 0票数 4

我有一个Coldfusion应用程序。为了保护我的站点免受跨帧脚本攻击,我计划在我的'.htaccess文件‘中添加一个值为"SAMEORIGIN“的HTTP响应头”X帧选项“。这是我指的那篇文章:

https://geekflare.com/secure-apache-from-clickjacking-with-x-frame-options/https://www.garron.me/en/bits/apache-htaccess-add-cache-control-header-file-type.html

下面的代码不工作。

代码语言:javascript
复制
<FilesMatch "\.(cfm)$"> 
<ifModule mod_headers.c> Header append X-FRAME-OPTIONS 'SAMEORIGIN'</ifModule> 
</FilesMatch>

我是新来的,能不能有人帮我把它做好。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-02-21 16:48:57

从您的示例来看,您似乎已经将所引用的两篇文章中的内容组合在一起。

Geekflare.com文章给出了Apache的示例:

代码语言:javascript
复制
Header always append X-Frame-Options SAMEORIGIN

Garron.me文章给出了Apache的示例:

代码语言:javascript
复制
<filesMatch ".(html|htm)$">
Header set Cache-Control "max-age=14400, must-revalidate"
</filesMatch>

在我看来,对于ColdFusion页面上的X帧选项头,它会被转换成这样:

代码语言:javascript
复制
<filesMatch ".(cfml|cfm)$">
Header always append X-FRAME-OPTIONS SAMEORIGIN
</filesMatch>

注意,在regex中没有像您的代码那样的前导斜杠\,并且在SAMEORIGIN周围没有必要的引号,并且省略了always关键字。您还有一个额外的<ifModule mod_headers.c>检查,我认为您不需要。我会将ColdFusion和<filesMatch ".(cfml|cfm|html|htm)$">扩展组合到类似于这个<filesMatch ".(cfml|cfm|html|htm)$">的条件下,以便为这些页面请求发送标题。

我只是从你提到的文章中得到这一点,但是你已经用ColdFusion标记了你的问题,所以有几种选择。事实上,后来版本的ColdFusion (我相信它是在版本10中引入的)提供了一些保护。你可以定制它来满足你的需求。请参阅本文的"ClickJacking“部分- ColdFusion 10的安全性改进

从该文件中:

ColdFusion管理员使用X帧选项防止点击劫持.您还可以进一步扩展此选项以保护您的应用程序,如下所示:

  1. 打开位于Web.xml的<Server-doc-root>/WEB-INF文件。
  2. 为应用程序添加URL筛选器映射,使用已经指定的两个筛选器之一:CFClickJackFilterSameOriginCFClickJackFilterDeny

现在假设您有一个应用程序testClick,您希望通过拒绝一个应用程序的框架来保护它不被点击。为此,请在web.xml文件中添加以下内容。

<filter-mapping>

<filter-name>CFClickJackFilterDeny</filter-name>

<url-pattern>/testClick/*</url-pattern>

</filter-mapping>

从我的服务器中查看web.xml文件包括以下内容(请注意它们是如何为ColdFusion管理员添加保护的):

代码语言:javascript
复制
<!-- 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

代码语言:javascript
复制
<filter-mapping>
    <filter-name>CFClickJackFilterSameOrigin</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

您甚至可以使用<cfheader>标记来包含响应头(但是您必须在所有页面或Application.cfc中这样做,等等)。

代码语言:javascript
复制
<cfheader name="X-FRAME-OPTIONS" value="SAMEORIGIN" />
票数 3
EN

Stack Overflow用户

发布于 2017-03-31 11:17:24

我通过在Header set X-Frame-Options DENY文件中添加IfModule mod_headers.c外部的.htaccess并在Apache中的mod_headers.so文件中启用头模块来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42372387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档