如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章