Wenn Sie eine Anmeldeseite haben, die über das Internet erreicht werden kann, wird diese Seite irgendwann angegriffen. Der Grund dafür ist, dass es für einen Angreifer sehr einfach ist, dies zu tun.
Brute-Force-Angriffe sind Versuche, durch Erraten des Benutzernamens und des verwendeten Kennworts Zugang zu einem Konto zu erhalten. Brute-Force-Angriffe sind eigentlich eine alte Technik der Internetkriminalität. Sie ist jedoch immer noch weit verbreitet, da sie als immer noch effektiv gilt.
Eine Möglichkeit, eine Website vor Brute-Force-Angriffen zu schützen, ist die Verwendung eines Captcha (Completely Automated Public Test to Tell Computers and Humans Apart). In diesem Tutorial werden wir lernen, wie man ein Captcha aktiviert, nachdem der Benutzer sich nicht anmelden konnte. Wie man ein Captcha erstellt, können Sie unter [yii2]Erstellen eines Anmeldeformulars mit Captcha. nachlesen.
Schritte zur Aktivierung von Captcha, wenn der Benutzer sich nicht anmelden kann:
Weitere interessante Artikel
1. Captcha-Felder und Validierungsregeln zu models/LoginForm.php hinzufügen
class LoginForm extends Model { ............. ............. public $verifyCode; ............. public function rules() { return [ ............. ............. ['verifyCode', 'required', 'when'=>function(){return $this->loginFailed;}], ['verifyCode', 'captcha', 'when'=>function(){return $this->loginFailed;}], ............. ............. ]; } public function validatePassword($attribute, $params) { if (!$this->hasErrors()) { ............. if (!$user || !$user->validatePassword($this->password)) { Yii::$app->session->set('_loginAttempts', Yii::$app->session->get('_loginAttempts', 0)+1); ............. } } } //Check number login failed public function getLoginFailed() { return Yii::$app->session->get('_loginAttempts', 0) > 3; } ............. ............. }
2. Widgets zu views/site/login.php hinzufügen
............. ............. <div class="site-login"> ............. ............. <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'login-form']); ?> ............. ............. <?php if($model->loginFailed){ echo $form->field($model, 'verifyCode')->widget(\yii\captcha\Captcha::class); } ?> ............. ............. <?php ActiveForm::end(); ?> </div> </div> </div>
3. Hinzufügen einer Aktion zum Controller/SiteController.php
Damit Captchas funktionieren, müssen Sie eine Aktion captcha zu controllers/SiteController.php hinzufügen. Vielleicht ist die Aktion bereits vorhanden, weil die Standardvorlage Yii2 app sie automatisch hinzufügt.
............. ............. class SiteController extends Controller { ............. ............. public function actions() { return [ ............. ............. 'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', ], ............. ............. ]; } ............. ............. }