操作系统:Ubuntu 14.04
Nginx:nginx版本:nginx / 1.4.6(Ubuntu)
为了在浏览器端为框架提供基于Clickjacking的安全性,可以用3种不同的方式设置X-Frame-Options
标头选项。
DENY
SAMEORIGIN
ALLOW-FROM <uri>
PS:https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet(用于兼容性矩阵)和https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options(注意:不要将Apache与Nginx混合用于配置部分)。
我想在我的Jenkins机器上启用框架/ iframe的显示(由Log parser plugin生成/提供),即在Jenkins工作的仪表板上。欲了解更多信息,你可以在这里看到一些背景:Jenkins Log parser plugin - parsed console log page is not showing Load denied by X-Frame-Options does not permit framing ERR_BLOCKED_BY_RESPONSE
为此,我需要确保,我的NGINX配置中没有以下行用于jenkins https conf文件/或者您可以将其提交。
add_header X-Frame-Options DENY;
评论此行和框架现在可以在您的浏览器中呈现正常,即在作业的仪表板上,但这样做会带来安全问题。
要实现第二个选项,请确保删除/替换上面的行或确保您的NGINX配置文件中的以下行EXIST为Jenkins https conf。
add_header X-Frame-Options SAMEORIGIN;
现在,第3种方法在https://_URI_value之前开始使用带有/不带双引号的ALLOW-FROM ALLOW-FROM
,并在URL部分之后结束。
这将告诉NGINX允许渲染来自给定URI的帧(在我的情况下是JENKINS URL),所以我尝试了以下内容:
#ALLOW-FROM https://my.company.jenkins.com/
#add_header X-Frame-Options ALLOW-FROM https://my.company.jenkins.com/
#add_header X-Frame-Options "ALLOW-FROM https://my.company.jenkins.com/"
如果我只启用第一行(如上面列出的第3种方法)并运行sudo service nginx restart; sleep 1; tail -1 /var/log/nginx/error.log
,那么我得到以下输出/错误。
* Restarting nginx nginx [fail]
2017/08/24 15:27:39 [emerg] 127120#0: unknown directive "ALLOW-FROM" in /etc/nginx/sites-enabled/jenkins_https.conf:23
如果我只启用第2行或第3行(如上面列出的第3种方法),那么我将获得第2 /第3行的以下输出/错误。
* Restarting nginx nginx [fail]
2017/08/24 15:29:49 [emerg] 127189#0: invalid number of arguments in "add_header" directive in /etc/nginx/sites-enabled/jenkins_https.conf:23
我怎样才能成功,在重启成功时使用nginx配置文件中的ALLOW-FROM语法而没有上述失败,它允许帧/ iframe呈现来自给定的URI / URL?
PS:使用add_header X-Frame-Options SAMEORIGIN;
,我的问题已经解决,但我主要是在寻找为什么ALLOW-FROM <URI/URL>
语法不起作用并给我上述错误消息。
上面接受的语法不起作用。
预期的语法是
add_header X-Frame-Options "allow-from https://my.example.com/";
在版本nginx / 1.11.9和nginx / 1.15.9上成功测试
您可能已经想到了这一点,但仅供后人使用:要在add_header中指定allow-from,请使用以下语法:
add_header "allow-from https://my.example.com/";