如何在 laravel 项目中设置 X-Frame-Options?

Posted

技术标签:

【中文标题】如何在 laravel 项目中设置 X-Frame-Options?【英文标题】:How to set X-Frame-Options in laravel project? 【发布时间】:2020-09-15 10:54:36 【问题描述】:

我想防止我的网站受到 clickJacking 攻击。在哪个文件以及在哪里设置 X-Frame-Options 以防止 clickJacking 攻击。

【问题讨论】:

这里有一个解决方案,显示如何设置X-Frame-Options gist.github.com/EduardoSP6/221c75332de2dbebebe98bf51f80ddb5 【参考方案1】:

你有两种方法:

nginx 等反向代理中设置它
add_header X-Frame-Options "SAMEORIGIN";
将 Laravel 中间件 Illuminate\Http\Middleware\FrameGuard 用于您要保护的路由。
<?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;
    

【讨论】:

嘿,我遇到了同样的问题。我尝试了这种方法(FrameGuard),但我仍然得到Refused to display ... in a frame because it set 'X-Frame-Options' to 'sameorigin',缺少什么? @HMihail 听起来你想做与 OP 试图做的相反的事情。 (允许来自不同域的 iframe,而不是阻止它来自除同一域之外的所有域。) 这也适用于 api 路由吗?我有 SPA 应用程序。 它对 JSON 路由没有用,只有 html 路由,所以它对你唯一的 HTML 路由很有用

以上是关于如何在 laravel 项目中设置 X-Frame-Options?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中设置全局变量?

使用 Hyn/多租户在 Laravel 项目中设置测试

如何在验证 laravel 中设置比较日期时间?

如何在 Laravel 中设置会话超时?

如何在刀片(laravel 5.3)中设置变量?

如何在 laravel、vuejs 应用程序中设置 Paystack