laravel 限制请求来我的网页基于他们的网址在PHP中

rhfm7lfc  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(96)

我必须限制用户访问我的网页的基础上的网址从哪里请求来我的网页。我能够得到的网址从哪里请求来使用
$_SERVER [HTTP_REFERER']
据我所知,HTTP_REFERER是一个由客户端发送的头,大多数浏览器的默认行为是发送它,但用户可以禁用它,甚至发送一个不同的referer头。所以有没有什么方法可以根据他们的URL对请求进行适当的验证?

im9ewurl

im9ewurl1#

不幸的是,如果用户设置了浏览器来修改请求头,PHP就没有办法辨别请求是否来自某个网站。
阻止来自URL的流量,虽然很容易做到-但永远不会100%准确。

7jmck4yq

7jmck4yq2#

这篇文章是旧的,但是,对于其他寻找更新答案的人来说,可以在nginx/apache服务器上添加命令来限制从其他主机到本地路径的访问,建立每分钟允许的请求数等。
但是,如果你没有访问服务器/目录配置,那么Laravel仍然可以提供一些技术来管理这个问题。
一种是创建一个新的中间件来限制对请求主机的访问。

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class checkHosts
{
   /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
    * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
    */
   public function handle(Request $request, Closure $next)
   {
      if ($request->getHost() != '<host_name>') {
         return response('You do not have access rights to this content.', 403);
      }
      return $next($request);
   }
}

字符串
不要忘记将此中间件添加到文件:app\Http\Kernel.php中,以便它对发送到您的端点的每个请求立即生效。

相关问题