markohs / protectionbanner
可定制的Laravel中间件,用于遵守欧盟cookie法规,并保护成人网站免受儿童访问,强制客户端在发送任何cookie或内容之前接受条件。
Requires
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3|~4
- phpunit/phpunit: ^8.0
- sempro/phpunit-pretty-print: ^1.0
README
可定制的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法可能不重要需要遵守的国家禁用它,但尚未实现。
设置活动环境
此包仅在工作环境中有效,默认为stage、prod和production。如果需要,请更新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。有关更多信息,请参阅许可文件。