[yii2] Tampilkan captcha setelah upaya login yang gagal

bardimin pic

Bardimin

18 April 2021
yii2 captcha

[yii2] Tampilkan captcha setelah upaya login yang gagal

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 yang digunakan. Brute force attack sebenarnya merupakan teknik lama dalam aksi cyber crime. Namun, masih banyak digunakan karena dianggap masih efektif.

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 captcha 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

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

<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. 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 Yii2 standar menambahkannya secara otomatis.

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

Artikel Terbaru

Teknik Dasar Perawatan Komputer dan Laptop

Teknik Dasar Perawatan Komputer dan Laptop

Anda mungkin tidak menyadarinya, tetapi komputer dan mobil memiliki kesamaan, keduanya membutuhkan perawatan rutin. Jika mobil Anda perlu mengganti oli secara rutin, komputer Anda secara rutin juga harus memperbarui perangkat lunak, menjaga antivirus tetap up to date,...

ChatGPT versi Desktop untuk Windows, Linux dan Mac

ChatGPT versi Desktop untuk Windows, Linux dan Mac

Apakah Anda tahu apa itu ChatGPT? Apakah Anda tahu cara mendapatkan dan menginstal ChatGPT di perangkat Anda? ChatGPT dengan cepat menjadi salah satu penemuan terpenting dalam dunia pemrosesan bahasa alami. Anda dapat menggunakannya untuk menghasilkan tanggapan...

Voltase Pinout Power Supply ATX 24 pin ke Motherboard

Voltase Pinout Power Supply ATX 24 pin ke Motherboard

Power Supply mengubah daya arus bolak-balik (AC) menjadi arus searah (DC) yang dikendalikan tegangan rendah. Beberapa perangkat Power Supply menyertakan pilihan tegangan input manual, sementara yang lain secara otomatis menyesuaikan. Power Supply mengubah tegangan...

Google Chrome – Buka Bookmark ke Tab Baru Secara Default

Google Chrome – Buka Bookmark ke Tab Baru Secara Default

Bookmark adalah pintasan untuk membuka halaman website yang telah anda simpan untuk anda kunjungi lagi nantinya. Pernahkah Anda mengunjungi halaman situs web yang cukup menarik dan anda ingin untuk mengunjunginya lagi nanti. Mengingat alamat halaman website tentu...