白名单域认证 Laravel

Posted

技术标签:

【中文标题】白名单域认证 Laravel【英文标题】:Whitelist Domain Authentication Laravel 【发布时间】:2015-12-10 14:30:42 【问题描述】:

我正在寻找只允许某些域访问我的 laravel 应用程序的最佳方法。我目前正在使用 Laravel 5.1,如果引用域不在白名单域中,我正在使用中间件进行重定向。

class Whitelist 

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */

    public function handle($request, Closure $next)
    
        //requesting URL
        $referer = Request::server('HTTP_REFERER');

        //parse url to match base in table
        $host = parse_url($referer, php_URL_HOST);
        $host = str_replace("www.", "", $host);

        //Cached query to whitelisted domains - 1400 = 24 hours
        $whiteList = Cache::remember('whitelist_domains', 1400, function()
            $query = WhiteListDomains::lists('domain')->all();
            return $query;
        );

        //Check that referring domain is whitelisted or itself?
        if(in_array($host, $whiteList))
            return $next($request);
        else
            header('HTTP/1.0 403 Forbidden');
            die('You are not allowed to access this file.');
        
    

有没有更好的方法来做这件事,还是我走在正确的轨道上?

任何帮助将不胜感激。

谢谢。

【问题讨论】:

当你说“我正在寻找只允许某些域访问我的 laravel 应用程序的最佳方式”时。你到底是什么意思?用户必须在这些域之一上,还是必须由这些域之一推荐? 我认为这是一个干净又好的解决方案 【参考方案1】:

你走在正确的轨道上,实施似乎很好。

但是,不要相信 HTTP_REFERER 作为身份验证/识别的手段,因为它很容易被修改。

【讨论】:

以上是关于白名单域认证 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

Nginx解决跨域配置(Cors),支持白名单

如何使用 Flask CORS 将域列入白名单

Laravel Model 的 fillable (白名单)与 guarded (黑名单)

APK安装时的过滤方式:包名白名单证书认证

angularjs中关于跨域设置白名单

laravel报错:MassAssignmentException