返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >nginx设置X-Frame-Options防止自己的网站被其他人iframe引入
  • 192
分享到

nginx设置X-Frame-Options防止自己的网站被其他人iframe引入

nginx前端php 2023-09-01 15:09:39 192人浏览 独家记忆
摘要

本文介绍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 = "";                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("");

来源地址:https://blog.csdn.net/wei042/article/details/129694097

--结束END--

本文标题: nginx设置X-Frame-Options防止自己的网站被其他人iframe引入

本文链接: https://lsjlt.com/news/388822.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作