Xác thực là 1 vấn đề cực kì quan trọng tránh hiện tượng web bạn bị tấn công từ bot .Hôm nay mình xin giới thiệu đến với các bạn 1 cách xác thực cực kì hiệu quả đến từ anh chàng google là google recaptcha .Bài viết gồm các phần

  • Lý do phải dùng recaptcha
  • Cách yêu cầu cần có và các gói extention cần thiết
  • Cách cài đặt và sử dụng recaptcha

Lý do phải dùng recaptcha

Lý do dùng recaptcha khi ta cần người dùng xác thực việc gửi dữ liệu quan trọng lên với chúng ta .Bạn tưởng tượng bạn cho phép người dùng auto upload ảnh hàng loạt lên server .Tính năng này rất tốt và đáp ứng người dùng rất tốt .Nhưng chẳng may có người chơi xấu viết 1 con bot gửi hàng triệu request lên thế là server sập .Phương án giải quyết là khóa ứng dụng lại hoặc xác thực người dùng trước khi gửi lên .Và tất nhiên việc xác thực được ưu tiên hơn hẳn vì vừa tiện ích với người dùng mà vừa chống bot tốt

Các yêu cầu cần có và các gói extention cần cài đặt

Yêu cầu gồm 3 thứ là

  • Có tài khoản google
  • Có domain riêng .Các bạn mua .xyz để thử hoặc tạo 1 subdomain như mình http://demo.hbsprogram.com/site/contact
  • Máy chủ cài đặt composer

Cách cài đặt và sử dụng recaptcha

Phía google

Bạn vào https://www.google.com/recaptcha/admin#beta sau đó tạo 1 ứng dụng recaptcha như hình sau :

Sau khi tạo bạn cần nhớ 2 thứ là Site key và Secret key như hình dưới đây

Phía demo.hbsprogram.com

Mình dùng gói recaptcha này cài đặt từ github này “himiklab/yii2-recaptcha-widget”: “*”

Có 2 cách cài đặt là

và thêm

vào composer.json sau đó dùng cmd gõ lệnh composer update

Cách sử dụng

Vào file main.php ở folder frontend/config thêm vào mục component :

Sau đó mình vào ContacForm.php trong frontend/models chỉnh sửa như sau

giờ đến views .Mình vào file contact.php ở folder frontend/views/site/ Thêm dòng lệnh sau

Ok vậy giờ là lúc xem thành quả ở link này http://demo.hbsprogram.com/site/contact

Vậy là ngon rồi .nếu có gì thắc mắc đừng ngần ngại comment để chúng ta cùng nhau giải đáp .Mình rất vui nếu các bạn comment và share bài viết này

 

Leave a Reply

Your email address will not be published. Required fields are marked *