在不同环境下添加X-Frame-Options保护的方法

首先我们来看一段关于框架劫持的安全说明。

The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a<frame>, <iframe> or <object> . Sites can use this to avoid clickjacking attacks, by ensuring that their content is not embedded into other sites.

Using X-Frame-Options
There are three possible values for X-Frame-Options:

DENY
The page cannot be displayed in a frame, regardless of the site attempting to do so.
SAMEORIGIN
The page can only be displayed in a frame on the same origin as the page itself.
ALLOW-FROM uri
The page can only be displayed in a frame on the specified origin.
In other words, if you specify DENY, not only will attempts to load the page in a frame fail when loaded from other sites, attempts to do so will fail when loaded from the same site. On the other hand, if you specify SAMEORIGIN, you can still use the page in a frame as long as the site including it in a frame is the same as the one serving the page.

文章里写到,在未设置相关的框架保护下,容易导致页面劫持,但是设置了框架的保护后并采用上述的三种保护方法中的任一种后,安全漏洞就得到了缓解,但是不同的平台有不同的方法。

Apache:

在配置文件中增加:

Header always append X-Frame-Options SAMEORIGIN

即可

Nginx:

同样在配置文件中增加:

add_header X-Frame-Options SAMEORIGIN

即可。

Tomcat:

这个比较特别,需要在页面里指定,当然也可以在web.xml里配,但是相当地复杂。

如在每个页面里增加:

response.addHeader( "X-Frame-Options", "SAMEORIGIN" )

xml的配置请看:https://www.owasp.org/index.php/Clickjacking_Protection_for_Java_EE。

IIS:

增加配置:

<system.webServer>
...

<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>

...
</system.webServer>

即可。

HAProxy:

增加:

rspadd X-Frame-Options:\ SAMEORIGIN

即可。

好了,请开始配置吧。

参考内容:

https://www.owasp.org/index.php/Clickjacking_Protection_for_Java_EE
https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
http://stackoverflow.com/questions/6666423/overcoming-display-forbidden-by-x-frame-options

我要评论!

想一个你喜欢的昵称。
给一个你的常用邮箱。
想和萌萌哒的TA们说点啥。
  • Android4.1之前的版本中,sdcard跟路径通过“/sdcard”或者“/mnt/sdcard”来表示,而在Jelly Bean系统中修改为了“/storage/sdcard0”,以后可能还会有多个sdcard的情况。目前为了保持和之前代码的兼容,不要硬编码“/sdcard/”。 为了使代码...
  • mac并没有像win一样提供什么快捷删除方式,我们只能找到pkg安装后产生的文件,然后删除它。 方法一: mac会维护一份pkg安装历史,只要找到那个文件夹,我们就可以搞定了。如osx 10.8以上系统,pkg历史安装列表在/private/var/db/receipts目录下: cd /priva...
  • 1、用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证。 2、如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中...
  • FTP是有两种传输的模式的,主动模式和被动模式,很多的朋友可能比较陌生或是多数是不清楚之间的差异。 一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。 1)      控制连接 客户端希望与FTP服务器建立上传下载的数据传输时...
  • 一个开源的GUI原型工具,可用于所有平台。 Pencil的目的是提供一个免费的开源GUI原型工具,人们可以很容易地安装和使用它在流行的桌面平台上创建原型。 简单的GUI原型 Pencil提供了各种内置的形状集合,用于绘制从桌面到移动平台的不同类型的用户界面。从2.0.2开始,Pencil将预装And...
微信扫一扫即可带走我!