本文介绍Nginx设置X-Frame-Options属性,防止网站被别人用iframe嵌入使用。兼容大部分浏览器。 背景说明:在项目开发中,单独用了一台服务器进行图片保存,网站上所有的上传图片都放在了
本文介绍Nginx设置X-Frame-Options属性,防止网站被别人用iframe嵌入使用。兼容大部分浏览器。
背景说明:在项目开发中,单独用了一台服务器进行图片保存,网站上所有的上传图片都放在了这台服务器上。基于这个需求我在这台服务器上开发了上传功能,图片上传成功后返回地址,然后把地址保存在数据库中。
使用方法:在需要上传图片的地方用iframe引入上传页面,进行上传。
出现问题:所有人都可以引入我这个iframe 页面把图片上传到我服务器。
解决方法:只允许我的域名或者网站才能引入iframe页面上传,有且只能是引入上传,不允许直接访问。这样就保证此iframe只有本服务器使用,其他人无权限。实现该功能需要在nginx配置中添加同源策略限制。
在nginx.conf配置的server中添加代码,可以在http中也可以在server中:
#设置iframe允许的域名访问,X-Frame-Options值有四种情况可以百度add_header X-Frame-Options 'ALLOW-FROM www.baidu.com m.baidu.com';#谷歌火狐浏览器识别不了上面的header,经过百度需要以下设置才可以add_header Content-Security-Policy 'www.baidu.com m.baidu.com';
为了防止浏览器访问,并且必须是自己网站引入,在server中进行referer判断添加以下代码:
#防盗链判断,valid_referers 有多种判断,可以百度valid_referers *.baidu.com;if ($invalid_referer) { return 403;}
以上就是nginx设置网页只允许指定的页面使用iframe进行引入
上传图片页面html代码如下:
<html><head> <title>上传</title> <meta charset="utf-8"> <script> document.domain="baidu.com"; </script></head><body> <iframe name="myupiframe" id="myupiframe" style="display:none;"></iframe> <fORM action="./sc.PHP" id="myform" method="post" enctype="multipart/form-data" target="myupiframe"> <input type="file" id="ycfile" name="ycfile" onchange="uploadimg(this)"> <input type="hidden" id="tupianlujing" name="tupianlujing" value=""> <div id="ycshowimg"> </div> </form> <script> function opennewimg(img) { window.top.open(img); } function showmsg(msg,type=0) { if (type==0) { alert(msg); return false; } else { var showimg = "+msg+"\")' src='"+ msg +"' style='width:100px;height: 100px;'>"; document.getElementById('ycshowimg').innerHTML = showimg; document.getElementById('tupianlujing').value = msg; } } function uploadimg(obj) { if (!obj) { alert("请选择您要上传的图片"); return false; } var newfiles = new Array(); var files= document.getElementById('ycfile').files; if (files.length>1) { alert("每次可以上传一张图片"); return false; } let file = files[0]; var suffix = file.name.substr(file.name.lastIndexOf(".")); var fileTypes = '.png;.jpg;.jpeg;.gif;.bmp'; if(fileTypes.indexOf(suffix)==-1){ alert("只支持图片上传") return; } if(file.size>2*1024*1024){ alert("图片大小限制为2M") return; } document.getElementById("myform").submit(); } </script></body></html>
php处理上传文件代码如下:
$file = isset($_FILES['ycfile']) ? $_FILES['ycfile'] : ''; //上传图片if(empty($file)){ exit("");}exit("");
--结束END--
本文标题: nginx设置X-Frame-Options防止自己的网站被其他人iframe引入
本文链接: https://lsjlt.com/news/388822.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0