hongliang/defender

保护您的网站免受恶意扫描

安装: 119

依赖: 0

建议者: 0

安全: 0

星标: 3

关注者: 3

分支: 2

开放问题: 0

类型:应用

v0.2.6 2018-07-12 10:03 UTC

This package is not auto-updated.

Last update: 2024-09-13 11:19:59 UTC


README

Scrutinizer Code Quality Build Status

Defender

保护您的网站免受恶意扫描。它与防御投票者一起工作。目前支持请求URI关键词和IP范围防御投票者。

安装

通过composer安装

composer require hongliang/defender

工作原理

如果您正在运行Silex或Symfony应用程序,请在自动加载之后、路由器之前注入以下代码。否则将触发未定义路由异常。

简单方法

\Hongliang\Defender\Defender::defend();

自定义方法

use Hongliang\Defender\Defender;
use Hongliang\Defender\Voter\IpRangeVoter;
use Hongliang\Defender\Voter\UriKeywordVoter;

$defender = new Defender();
$defender->addVoter(new IpRangeVoter())
    ->addVoter(new UriKeywordVoter())
    ->react();

根据您的需求进行自定义

use Hongliang\Defender\Defender;
use Hongliang\Defender\Voter\IpRangeVoter;
use Hongliang\Defender\Voter\UriKeywordVoter;
use Hongliang\Defender\Voter\SpiderVoter;

// it's possible to customize the level of reaction as the 2nd parameter of addVoter()
// it's possible to set a URL to redirect to when the level is revenge or higher. By default it's localhost
$defender = new Defender();
$defender->addVoter(new IpRangeVoter(), Defender::FORBIDDEN)
    ->addVoter(new UriKeywordVoter(), Defender::REVENGE)
    ->addVoter(new SpiderVoter(), Defender::DENY)
    ->setRedirectUrl('http://www.google.com')
    ->react();

更高级的使用

use Hongliang\Defender\Defender;
use Hongliang\Defender\Voter\IpRangeVoter;
use Hongliang\Defender\Voter\UriKeywordVoter;
use Hongliang\Defender\Voter\SpiderVoter;

$voter = new UriKeywordVoter();
$voter->setAssets(['fckedit', '/wp-']);
$ipVoter = new IpRangeVoter();
$ipVoter->setAssets([['0.0.0.0', '255.255.255.255']]);

$spiderVoter = new SpiderVoter();
$spiderVoter->setAssets(['Baiduspider', '360spider']);

$defender = new Defender();
$defender->addVoter($ipVoter, Defender::FORBIDDEN)
    ->addVoter($voter, Defender::DENY)
    ->addVoter($spiderVoter, Defender::DENY)
    ->react();

待办事项

  • 将IP范围分别存入单独的文件或甚至外部资源
  • 将IP范围构建成长整数以提高性能
  • 支持日志记录并记录所有高于正常级别的信息
  • 将URI关键词分类,例如WordPress、Joomla。这样就可以在那些CMS中使用。