先介绍以下自己的网页被别人IFrame有什么危害?
可以使用Iframe进行点击劫持
iframe 标签:可以创建包含另外一个文档的内联框架
我们首先看到一个美女照片,可以点击按钮玩游戏
但是你没想到的是,按钮下面有其他的网页,只不过把网页改成透明
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<meta http-equiv="X-Frame-Options" content="SAMEORIGIN / DENY " />
<style>
html,
body,
iframe {
display: block;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
border: none;
}
iframe {
opacity: 0.3;
overflow: hidden;
}
</style>
</head>
<body>
<iframe src="https://www.17173.com/"></iframe>
<div style="position: absolute; top: 0; left: 0; bottom: 0; right: 0">
<div style="position: relative; width: 300px; height: 500px">
<img src="aa.png" width="300px" height="500px" />
<button
style="
position: absolute;
bottom: 0;
left: 50%;
transform: translate(-50%);
width: 80px;
height: 40px;
"
>
点击玩游戏
</button>
</div>
</div>
</body>
</html>
如果点击玩游戏按钮下有其他按钮,比如点击输入银行卡密码和卡号,那将会很危险。
所以怎样才能防止别人把我们的网页通过iframe嵌入到别人的网页中呢?
首先介绍一个HTTP 头字段属性 X-Frame-Options
X-Frame-Options 有三个可选的值
1.DENY: 浏览器拒绝当前页面加载任何Frame页面;
2.SAMEORIGIN: frame页面的地址只能为同源域名下的页面;
3.ALLOW-FROM : 允许 frame加载的页面地址
防止自己网页被别人iframe嵌套方法
1.PHP防止方法
header('X-Frame-Options:Deny')
2.Nginx
在server http 或者 location
add_header X-Frame-Options SAMEORIGIN
也可以加载location 中
location /{
add_header X-Frame-Options SAMEORIGIN
}
也可以是以下配置:
add_header X-Frame-Options ALLOW-FROM https://opencss.cn/;
#允许单个域名
add_header X-Frame-Options "ALLOW-FROM http://lookcss.com/,https://opencss.cn/";
#允许多个域名
以下是在nginx中配置了 add_header X-Frame-Options Deny 的效果
从上面可以看出,响应头中多了 X-Frame0Options属性
3.Apache
Header always append X-Frame-Options SAMEORIGIN