Lewati ke konten
logo bardimin 300x60 1
  • Home
  • Blog
  • Kategori
    • Android
    • Database
    • Framework
    • Hardware
    • Network
    • Software
    • Teknik
    • Teknologi
    • Windows
  • Bahasa IndonesiaBahasa Indonesia
    • Bahasa IndonesiaBahasa Indonesia
    • EnglishEnglish
logo bardimin 300x60 1
  • Home
  • Blog
  • Kategori
    • Android
    • Database
    • Framework
    • Hardware
    • Network
    • Software
    • Teknik
    • Teknologi
    • Windows
  • Bahasa IndonesiaBahasa Indonesia
    • Bahasa IndonesiaBahasa Indonesia
    • EnglishEnglish

[yii2] Tampilkan captcha setelah upaya login yang gagal

Framework, Teknologi / 18 April 2021 11 Desember 2021

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.

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

TOP TUTORIALS:  Cara Mengaktifkan atau Menonaktifkan Fullscreen Optimizations di Windows 11

Langkah-langkah untuk mengaktifkan captcha setelah user gagal login:

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

.............
.............
 
class SiteController extends Controller
{
    .............
    .............
     
    public function actions()
    {
        return [
            .............
            .............
             
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
            ],
            .............
            .............
        ];
    }
     
    .............
    .............   
}
Navigasi pos
← Pos Sebelumnya
Selanjutnya Pos →

ANDA MUNGKIN JUGA MENYUKAI

cmd-displaydns

Cara Flush DNS untuk menghapus Cache DNS di Windows 11

set priority task manager

Cara Menjalankan Aplikasi Dengan Prioritas Tinggi di Windows

browser-brave-fitur

Browser Brave, Pembunuh Penghasilan Blogger

Neverware CloudReady

Cara Instal Chrome OS di Mesin Virtual VMWare

Pos-pos Terbaru

  • Cara Menambahkan debug symbol ke build.gradle
  • Cara Membuat onClickListener pada Drawable EditText
  • Hacking “Permintaan Kehadiran” di Microsoft Kaizala
  • Cara Menggunakan VoidCallback dan Function(x) Callbacks untuk Berkomunikasi Antar Widget di Flutter
  • Memilih Aplikasi Lokasi Palsu
  • KAIZALA GPS
  • Cara Mengubah Minsdkversion di Flutter
  • Cara Mudah Mengaktifkan Opsi Pengembang di Android
  • Cara Mudah Instal Flutter di Android Studio dan Windows
logo bardimin 300x43 1

© Bardimin 2022

  • Kebijakan Privasi
  • Syarat dan Ketentuan
  • Disclaimer
  • Kontak
  • Tentang Kami
  • Android
  • Database
  • Framework
  • Hardware
  • Network
  • Software
  • Teknik
  • Teknologi
  • Windows
pixel