确保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+javascript模拟Matrix画面
Oct 09 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
Apr 20 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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
使用php4加速网络传输
2006/10/09 PHP
php 进度条实现代码
2009/03/10 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
如何在PHP中使用数组
2020/06/09 PHP
图片完美缩放
2006/09/07 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python实现k-means算法
2018/02/23 Python
python读取中文txt文本的方法
2018/04/12 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
《只有一个地球》教学反思
2014/02/14 职场文书
寄语学生的话
2014/04/10 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
学校教学管理制度
2015/08/06 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers