如何添加" X-Frame-Options" .htaccess文件中的标题,以防止' ClickJacking'攻击

时间:2017-02-21 16:09:50

标签: apache .htaccess security coldfusion http-headers

我有一个Coldfusion Web应用程序。为了保护我的网站免受跨框架脚本攻击,我计划添加一个HTTP响应标头" X-Frame-Options"价值为#34; SAMEORIGIN"在我的' .htaccess文件中#39;这是我提到的文章:

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

下面的代码没有用。

<FilesMatch "\.(cfm)$"> 
<ifModule mod_headers.c> Header append X-FRAME-OPTIONS 'SAMEORIGIN'</ifModule> 
</FilesMatch>

我是新手,有人可以帮助您正确地做到这一点。

提前致谢。

2 个答案:

答案 0 :(得分:2)

从您的示例中,您看起来已经合并了所引用的两篇文章中的内容。

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>

请注意,正则代码中没有前导斜杠\和代码中的SAMEORIGINalways周围没有引号,您省略了<ifModule mod_headers.c>关键字。您还需要额外的<filesMatch ".(cfml|cfm|html|htm)$">支票,我认为您不需要。我会将ColdFusion和HTML扩展组合到像<Server-doc-root>/WEB-INF这样的条件,以便为这些页面请求发送标头。

我刚刚从您引用的文章中获得了这些内容,但您已使用ColdFusion标记了您的问题,因此有多种选择。事实上,更高版本的ColdFusion(我相信它是在版本10中引入的)带来了一些开箱即用的保护。您可以自定义它以满足您的需求。请参阅&#34; ClickJacking&#34;本文的一部分 - Security improvements in ColdFusion 10

从该文件:

  

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

     
      
  1. 打开位于CFClickJackFilterSameOrigin

  2. 的Web.xml文件   
  3. 使用已指定的两个过滤器之一为您的应用添加网址过滤器映射:CFClickJackFilterDenytestClick

  4.         

    现在让我们假设您有一个应用程序<filter-mapping>,您希望通过拒绝应用程序框来防止点击劫持。为此,请在web.xml文件中添加以下内容。

         

    <filter-name>CFClickJackFilterDeny</filter-name>
         <url-pattern>/testClick/*</url-pattern>
         </filter-mapping>
         web.xml

查看我的某个服务器中的<!-- 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

因此,为了保护您的整个ColdFusion网站,您可以为网站的根/*添加<filter-mapping> <filter-name>CFClickJackFilterSameOrigin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

<cfheader>

您甚至可以使用<cfheader name="X-FRAME-OPTIONS" value="SAMEORIGIN" /> 标记来包含响应标头(但您必须在所有页面上或Application.cfc中执行此操作等)。

    ../.android/
    ../.bash_history
    ../.bash_profile
    ../.bashrc
    ../.gitconfig
    ../.lmmsrc.xml
    ../.viminfo
    ../3D Objects/
    ../AppData/
    ../Contacts/
    Books/
    Brackets.lnk
    Coding Projects/
    Dannys UNI/
    Game Dev/
    HP/
    Learning Dutch.odt
    Photoshop - Shortcut.lnk
    Photoshop/
    Repository/
    Repository2/
    SCAN0000.bmp
    Spotify.lnk
    Steam.lnk
    Studies/
    Stuff I Dont Want To Sort/
    Sublime Text 3.lnk
    desktop.ini
    game_new.js
    game_old.js
    meme_salt_bae-20170206-007-rita.jpg
    ~$Oober.odt
    ~$e situation in yemen.docx
    ~$linese.docx
    ~WRL4078.tmp
    ../Documents/
    ../Downloads/
    ../Favorites/
    ../Links/
    ../Music/
    ../NTUSER.DAT
    ../NTUSER.DAT{48f83f2c-82db-11e6-b460-dfd6d497f2b5}.TxR.0.regtrans-ms
    ../NTUSER.DAT{48f83f2c-82db-11e6-b460-dfd6d497f2b5}.TxR.1.regtrans-ms
    ../NTUSER.DAT{48f83f2c-82db-11e6-b460-dfd6d497f2b5}.TxR.2.regtrans-ms
    ../NTUSER.DAT{48f83f2c-82db-11e6-b460-dfd6d497f2b5}.TxR.blf
    ../NTUSER.DAT{48f83f2d-82db-11e6-b460-dfd6d497f2b5}.TM.blf
    ../NTUSER.DAT{48f83f2d-82db-11e6-b460-dfd6d497f2b5}.TMContainer000000000                                                                                                                                                                                               00000000001.regtrans-ms
    ../NTUSER.DAT{48f83f2d-82db-11e6-b460-dfd6d497f2b5}.TMContainer000000000                                                                                                                                                                                               00000000002.regtrans-ms
    ../OneDrive/
    ../Pictures/
    ../Saved Games/
    ../Searches/
    ../Videos/
    ../ntuser.dat.LOG1
    ../ntuser.dat.LOG2
    ../ntuser.ini

答案 1 :(得分:0)

我已经通过添加&#34; Header设置X-Frame-Options DENY&#34;来解决了这个问题。外部&#34; IfModule mod_headers.c&#34;在.htaccess文件中,并在Apache中的mod_headers.so文件中启用Header模块。