[yii2] Tampilkan captcha setelah upaya login yang gagal

18 April 2021

Home » Blog » Teknologi » [yii2] Tampilkan captcha setelah upaya login yang gagal

Jika Anda memiliki halaman login yang dapat dijangkau melalui internet, pada titik tertentu halaman itu akan diserang. Alasannya adalah karena sangat mudah bagi penyerang untuk melakukannya.

Serangan brute force adalah upaya mendapatkan akses sebuah akun dengan menebak username dan password yang digunakan. Brute force attack sebenarnya merupakan teknik lama dalam aksi cyber crime. Namun, masih banyak digunakan karena dianggap masih efektif.

TOP TUTORIALS:  Cara menggunakan voice typing untuk mengetik pada PC

Salah satu cara mengamankan website dari brute force attack adalah menggunakan (Completely Automated Public Test to Tell Computers and Humans Apart). Dalam tutorial ini, kita akan belajar mengaktifkan setelah user gagal login. Untuk cara membuat dapat anda baca pada [yii2] Membuat Form Login dengan Captcha.

Langkah-langkah untuk mengaktifkan captcha setelah user gagal login adalah sebagai berikut:

1. Menambahkan field captcha dan rules validasi pada models/LoginForm.php

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. Menambahkan widget pada views/site/login.php

.............
.............

............. .............
'login-form']); ?> ............. ............. loginFailed){ echo $form->field($model, 'verifyCode')->widget(\yii\captcha\Captcha::class); } ?> ............. .............

3. Menambahkan action pada controller/SiteController.php

Agar captcha berfungsi, Anda harus menambahkan action captcha ke controllers/SiteController.php. Mungkin action tersebut sudah ada karena templat standar menambahkannya secara otomatis.

.............
.............
 
class SiteController extends Controller
{
    .............
    .............
     
    public function actions()
    {
        return [
            .............
            .............
             
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
            ],
            .............
            .............
        ];
    }
     
    .............
    .............   
}

0 Komentar