markohs/protectionbanner

可定制的Laravel中间件,用于遵守欧盟cookie法规,并保护成人网站免受儿童访问,强制客户端在发送任何cookie或内容之前接受条件。

v0.1.4 2020-02-11 09:30 UTC

This package is auto-updated.

Last update: 2024-09-11 20:11:43 UTC


README

Build Status Latest Version on Packagist Total Downloads StyleCI

可定制的Laravel中间件,用于遵守欧盟Cookie法(GDPR),并保护成人网站免受儿童访问。

该软件确保您遵守法律,走的是艰难之路

  • 所有HTTP请求都被捕获,并向用户展示一个全页横幅。该页面完全不使用cookie,不维护会话。
  • 一旦用户接受条件,就会发送cookie,并将用户重定向到原始目标页面。所有未来的交互,将照常进行。原始GET参数将传递到原始请求。
  • 它检测爬虫,因此SEO、opengraph、reddit、twitter...不受影响。它们不受此包的影响。
  • 存在一个白名单机制,因此您可以排除您网站上某些URL的行为。

查看contributing.md,以查看待办事项列表。

安装

通过Composer

$ composer require markohs/protectionbanner

发布默认配置文件和默认视图

$  php artisan vendor:publish --tag=ProtectionBanner

现在您可以在config/protectionbanner.php中编辑默认设置,并使用/resources/views/vendor/protectionbanner/banner.blade.php作为横幅的模板。

用法

您可以使用以下任何方法强制显示横幅

您可以在例如routes/web.php的单个路由中强制HTTPS

Route::get('/','StaticPageController@getRoot')->middleware('protectionbanner');

您还可以在config/protectionbanner.php中使用自动中间件组注册机制

    'autoregister' => ['web']

或者您可以在app/Http/Kernel.php中手动添加中间件,如在所需的中间件组中

...
'web' => [
    \App\Http\Middleware\EncryptCookies::class,
...
    \Markohs\ProtectionBanner\Middleware\ProtectionBannerMiddleware::class,
...

    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],
..

爬虫和SEO

此中间件如果检测到代理是任何爬虫或redditbot,将禁用自己,因此SEO、Google和reddit/twitter/opengraph抓取不受影响。

这是对jaybizzle/laravel-crawler-detect依赖的原因。我计划在某个时候使用GEOIP来能够在cookie法可能不重要需要遵守的国家禁用它,但尚未实现。

设置活动环境

此包仅在工作环境中有效,默认为stageprodproduction。如果需要,请更新config/protectionbanner.php

    'enabled_environments' => ['stage', 'prod', 'production'],

URL白名单机制

此包还有一个路径排除机制,我在我的项目中发现它很有用。即使请求受此中间件的影响,也会检查路径列表,以“白名单”的方式,那些URL不会触发横幅。

您可以在config/protectionbanner.php中设置此URL白名单。

    'whitelist' => [
        'example/url',
        'example2'
    ],

日志记录

我不知道这是否有任何法律价值,但您可以在config/protectionbanner.php中记录接受条件的所有IP。

    /*
     * Channel to log accept info, if necessary
     * Default: null
     * example: "accepts"
     */
    'logchannel' => "accepts"

当然,您需要将此通道添加到config/logging.php中。

重要说明

如果您使用Cloudflare或某种类型的代理来托管您的网站,请确保您正确配置了TrustedProxy,否则此中间件可能无法正常工作。

请确保将配置文件/config/trustedproxy.php保持最新,或者app\Http\Middleware\TrustProxies.php,变量$proxies

变更日志

请参阅变更日志获取最近更改的更多信息。

贡献

请参阅contributing.md以获取详细信息和工作待办事项列表。

安全

如果您发现任何与安全相关的问题,请发送电子邮件至marcos@tyrellcorporation.es,而不是使用问题跟踪器。

致谢

许可协议

MIT。有关更多信息,请参阅许可文件