jorisvaesen / cakephp-antiflood
CakePHP 插件,用于保护登录表单免受暴力攻击
dev-master
2017-09-04 15:58 UTC
Requires
- php: >=5.5
- cakephp/migrations: ~1.0
- cakephp/orm: >=3.4
Requires (Dev)
- cakephp/cakephp: ~3.0
- cakephp/cakephp-codesniffer: dev-master
- phpunit/phpunit: 4.1.*
This package is not auto-updated.
Last update: 2024-09-25 02:51:51 UTC
README
安装
composer require jorisvaesen/cakephp-antiflood:"dev-master"
bin/cake plugin load --bootstrap JorisVaesen/Antiflood
UsersController.php
public function initialize() { parent::initialize(); $this->loadComponent('JorisVaesen/Antiflood.Antiflood', [ 'ip' => true, // filter by IP 'cacheConfig' => 'antiflood', // cache config used to save attampts 'maxAttempts' => 3, // maximum attempts within cache config duration 'salt' => true, // salt identifier to be unique for an application (true = securiy salt, string = custom salt, false = not salted) 'log' => false, // write ip and identifier to database when maxAttempts is reached, false to disable, true to enable, callback to use a custom function ]); } public function login() { if ($this->request->is('post')) { if (!$this->Antiflood->check($this->request->getData('email'))) { $this->Flash->error(__('Login blocked, too many attempts'), [ 'key' => 'auth' ]); return; } $user = $this->Auth->identify(); if ($user) { $this->Auth->setUser($user); if ($this->Auth->authenticationProvider()->needsPasswordRehash()) { $user = $this->Users->get($user['id']); $user->password = $this->request->getData('password'); $this->Users->save($user); } return $this->redirect($this->Auth->redirectUrl()); } else { $this->Antiflood->increment($this->request->getData('email')); $this->Flash->error(__('Username or password is incorrect'), [ 'key' => 'auth' ]); } } }
当达到最大尝试次数时保存日志的迁移
bin/cake migrations migrate -p JorisVaesen/Antiflood
待办事项
- tests
- 文档