确保Laravel网站不会被嵌入到其他站点中的方法


Posted in PHP onOctober 18, 2019

HTTP 响应头部中,有一个字段,叫做 X-Frame-Options,该字段可以用来指示是否允许自己的网站被嵌入到其他网站的 <iframe> 或者 <object> 标签中。该头部有三个值

  1. DENY - 始终不允许嵌入,即使是同一个域名
  2. SAMEORIGIN - 只能在相同域名中嵌入
  3. ALLOW-FROM uri - 设置允许的域

通常,可以在 HTTP 代理中进行配置,比如 nginx

add_header X-Frame-Options SAMEORIGIN;

Laravel 自带了用来「只允许同域名嵌入」的中间件,我们只需要在 /app/Http/Kernel.php 中添加即可

// /app/Http/Kernel.php
protected $middleware = [
  \Illuminate\Http\Middleware\FrameGuard::class,
];

该中间件的实现如下

<?php

namespace Illuminate\Http\Middleware;

use Closure;

class FrameGuard
{
  /**
   * Handle the given request and get the response.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return \Symfony\Component\HttpFoundation\Response
   */
  public function handle($request, Closure $next)
  {
    $response = $next($request);

    $response->headers->set('X-Frame-Options', 'SAMEORIGIN', false);

    return $response;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP新手上路(十四)
Oct 09 PHP
SSI指令
Nov 25 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
微信开发之获取JSAPI TICKET
Jul 07 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
基于PHP实现发微博动态代码实例
Dec 11 PHP
PHP的Trait机制原理与用法分析
Oct 18 #PHP
tp5修改(实现即点即改)
Oct 18 #PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 #PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 #PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 #PHP
tp5.1 实现setInc字段自动加1
Oct 18 #PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 #PHP
You might like
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
js实现点击生成随机div
2020/01/16 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
在Python中处理时间之clock()方法的使用
2015/05/22 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Python sorted对list和dict排序
2020/06/09 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
必须要使用游标的SQL语句有那些
2012/05/07 面试题
二手房买卖协议书
2014/04/10 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL