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

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;
  }
}

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

(0)

相关推荐

  • 跟我学Laravel之快速入门

    安装 Laravel框架使用 Composer 执行安装和依赖管理.如果还没有安装的话,现在就开始 安装 Composer 吧. 安装Composer之后,你就可以通过命令行使用如下命令安装Laravel了: composer create-project laravel/laravel your-project-name 或者,你可以从 Github仓库 下载.接下来,在 安装Composer 之后,在项目根目录下执行 composer install 命令.该命令将会下载以及安装框架的依赖组

  • Laravel实现用户注册和登录

    Laravel身为最优雅的PHP框架,很多学习PHP的小伙伴造就对Laravel垂涎欲滴.今天就来实现你的愿望,让我们一起从零开始,利用Laravel实现Web应用最常见的注册和登录功能!所有的课程源码已放在Github上:laravel-start. Race Start ! 首先我们来明确一下我们这个课程需要的东西: Laravel 4.2 Bootstrap 3.3 Laravel就是我们关心的核心部分,Bootstrap用来快速设置一些前端的CSS样式. 1.安装Laravel 简单说明

  • Laravel中使用自己编写类库的3种方法

    虽然Composer使得我们可以重用很多现有的类库(例如packagist.org中的),但是我们仍然可能用到一些不兼容composer的包或者类库.另外在某一项目中,我们也可能会创建某一类库,而且可能并没有制作成为composer package 的打算.这个时候我们可以通过以下方式来使用自己的特有类库. 增加可直接实例化的类 有些需要直接在项目中使用的类,可以通过以下方式增加到Laravel中 1.创建类库文件app/libraries/class/myClass.php 2.写入文件内容

  • Laravel 5框架学习之表单

    首先让我们修改路由,能够增加一个文章的发布. 复制代码 代码如下: Route::get('articles/create', 'ArticlesController@create'); 然后修改控制器 复制代码 代码如下: public function create() {         return view('articles.create');     } 我们返回一个视图,新建这个视图.我们当然可以直接使用HTML建立表单,但我们有功能更好的办法.我们使用一个开源库,Jeffrey

  • Laravel框架中扩展函数、扩展自定义类的方法

    一.扩展自己的类 在app/ 下建立目录 libraries\class 然后myTest.php 类名格式 驼峰 myTest 复制代码 代码如下: <?php class myTest { public  function test() { return '1asdasd111'; } } 在 app/start/global.php 复制代码 代码如下: ClassLoader::addDirectories(array( app_path().'/commands', app_path(

  • Laravel框架表单验证详解

    基础验证例子 复制代码 代码如下: $validator = Validator::make( array('name' => 'Dayle'), array('name' => 'required|min:5') ); 传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则. 多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素. 通过数组指定验证规则 复制代码 代码如下: $validator = Validator

  • Laravel框架路由配置总结、设置技巧大全

    基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码 代码如下: Route::get('/', function() { return 'Hello World'; }); 基本 POST 路由 复制代码 代码如下: Route::post('foo/bar', function() { return 'Hello World'; }); 注册一个路由以响应所有 HT

  • 跟我学Laravel之路由

    基本路由 应用中的大多数路都会定义在 app/routes.php 文件中.最简单的Laravel路由由URI和闭包回调函数组成. 基本 GET 路由 复制代码 代码如下: Route::get('/', function() {     return 'Hello World'; }); 基本 POST 路由 复制代码 代码如下: Route::post('foo/bar', function() {     return 'Hello World'; }); 注册一个可以响应任何HTTP动作

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

    HTTP 响应头部中,有一个字段,叫做 X-Frame-Options,该字段可以用来指示是否允许自己的网站被嵌入到其他网站的 <iframe> 或者 <object> 标签中.该头部有三个值 DENY - 始终不允许嵌入,即使是同一个域名 SAMEORIGIN - 只能在相同域名中嵌入 ALLOW-FROM uri - 设置允许的域 通常,可以在 HTTP 代理中进行配置,比如 nginx add_header X-Frame-Options SAMEORIGIN; Larave

  • Laravel网站打开速度优化的方法汇总

    前言 Laravel是一个功能强大的框架,组件很多,代码也很庞大,它的易用方便是牺牲了性能的,即便如此它仍然是一个优秀的框架,但在正式环境下要做好优化提升网站的打开速度.下面这篇文章主要给大家介绍了关于Laravel网站打开速度优化的一些方法技巧,下面话不多说,来一起看看详细的介绍: 一.关闭debug 打开.env文件,把debug设置为false. APP_ENV=local APP_DEBUG=false APP_KEY=base64:sT/aTFeaE13eyao1Raee6jC9Ff+

  • Go语言中的方法、接口和嵌入类型详解

    概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 1.编译器会因为我们同时有两个接口实现而报错吗? 2.如果编译器接受这样的定义,那么当接口调用时编译器要怎么确定该使用哪个实现? 在写了一些测试代码并认真深入的读了一下标准之后,我发现了一些有意思的东西,而且觉得很有必要分享出来,那么让我们先从 Go 语言中的方法开始说起. 方法 Go 语言中同时有函数和方法.一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的

  • 在.NET中读取嵌入和使用资源文件的方法

    Dotnet中嵌入资源(位图.图标或光标等)有两种方式,一是直接把资源文件加入到项目,作为嵌入资源,在代码中通过Assembly的GetManifestResourceStream方法获取资源的Stream.另一种方法是在项目中加入. resx资源文件,在资源文件中添加资源,由ResourceManager类统一管理其中的资源. 下面分别详述这两种方法 一.使用GetManifestResourceStream读取嵌入资源 1.加入资源文件 直接把要嵌入到程序集的资源文件加入到项目中,可以加在项

  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法

    本文实例讲述了C#使用WebClient登录网站并抓取登录后的网页信息实现方法.分享给大家供大家参考,具体如下: C#登录网站实际上就是模拟浏览器提交表单,然后记录浏览器响应返回的会话Cookie值,再次发送请求时带着这个会话cookie值去请求就可以实现模拟登录的效果了. 如下类CookieAwareWebClient实现在发送请求时都带着cookie. public class CookieAwareWebClient : WebClient { private CookieContaine

  • laravel框架模板之公共模板、继承、包含实现方法分析

    本文实例讲述了laravel框架模板之公共模板.继承.包含实现方法.分享给大家供大家参考,具体如下: 简介: 利用laravel框架开发后台管理系统或web站点,即嵌入式开发,所以php开发人员要自己整合模板. 本篇举例后台管理系统 模板路径:/resources/views/admin 1.建立公共目录 /resources/views/admin/layouts/ layouts下面分别建立如下几个模板(可自行减少或增多) /header.blade.php  头部 /main.blade.

  • laravel利用中间件防止未登录用户直接访问后台的方法

    中间件介绍 http://laravelacademy.org/post/7812.html 创建中间件 php artisan make:middleware AdminLogin 然后我们打开kernel.php,将这个中间件加入到$routeMiddleware路由中间件中 'admin.login' => \App\Http\Middleware\AdminLogin::class, 一个简单的小判断,判断一下有没有session存在,如果有的话就直接走我们现在访问的路由,如果没有ses

  • laravel实现查询最后执行的一条sql语句的方法

    代码: DB::connection()->enableQueryLog(); $query = DB::table('test')->orderBy('id', 'desc')->get();//需要执行的SQL语句 echo '<pre>'; print_r(DB::getQueryLog()); 执行结果为: Array ( [0] => Array ( [query] => select count(*) as aggregate from `sj_rea

  • laravel中数据显示方法(默认值和下拉option默认选中)

    如下所示: <div class="form-group"> <label>ap状态:</label> <select name="ap_status_id"> <option value ="1">进行中</option> <option value ="2">开始</option> <option value="

  • Laravel框架执行原生SQL语句及使用paginate分页的方法

    本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法.分享给大家供大家参考,具体如下: 1.运行原生sql public function getList($data){ //获取前端传过来的参数 $user = $data['userId']; $office = $data['officeId']; $key = $data['oneKeySearch']; //进行模糊搜索和联合查询 $where = 'and 1=1 '; if($key!=null) {

随机推荐