ReCaptcha là gì? Hướng dẫn cách triển khai Google Recaptcha 2023

  • Thursday 19/01/2023

Recaptcha là gì ? Trước khi tìm hiểu về Recaptcha bạn nên nắm rõ về Captcha trước đã. Captcha là một hình ảnh chứa các ký tự chữ hoặc số được làm “biến dạng” để máy tính khó đọc mà con người thì đọc được. Mục đích của Captcha là bắt người dùng xác nhận hình ảnh đó thành chữ nếu khớp thì hành động đang thực hiện sẽ được tiếp tục nếu không thì Captcha mới sẽ hiện lên để xác minh lần nữa.

1. Khái niệm cơ bản về Captcha và Google reCAPTCHA

1.1 Captcha là gì?

Mục đính sau cùng của Captcha là chống lại các phần mềm, robot tự động thực hiện thao tác nhiều lần, liên tục. Captcha đòi hỏi thực thi hành động đó phải là con người – người dùng ngồi trước máy tính.

Ví dụ mộ trang đăng ký không có Captcha thì có thể làm một phần mềm tự động: tự điền thông tin rồi submit để đăng ký. Phần mềm thực hiện liên tục hàng ngàn, hàng triệu lần tài khoản ảo. Điều này không một admin website nào mong muốn.

recaptcha

Captcha từ khi ra đời đến nay đã có rất nhiều biến thể chứ không như xác nhận chuỗi ký tự trong ảnh như: giải toán, trả lời câu hỏi, chơi game, nghe và trả lời …

Captcha có thể gây ra rắc rối cho người dùng thực sự (không phải là robot) khi captcha quá xấu để đọc, nghe không hiểu, … Một loại Captcha được sử dụng rộng rãi hiện nay đó là reCAPTCHA cho chính Google phát minh, sử dụng cung cấp miễn phí.

1.2 Google reCAPTCHA là gì?

Vâng, trước hết thì đây là một sản phẩm của gã khổng lỗ Google. Với captcha truyền thống ta cần phải gõ vào một tập chữ hoặc số để vượt qua nhưng nó ngày càng dễ bị qua mặt bởi hacker, spammer …. Do đó một loại Captcha mới ra đời gọi là no-Captcha. Thay vì phải nhìn và gõ đống kí tự khó nhận biết kia thì ta chỉ cần ấn vào nút “Tôi không phải là người máy” – thế là xong.

Nghe đơn giản quá nhỉ? Nhưng thật ra thì chưa hẳn đâu, vì nếu Google vẫn chưa đủ tin tưởng bạn là “con người” thì nó sẽ tiếp tục sử dụng hệ thống nhận biết hình ảnh. Đại loại là nó đưa ra 9 bức hình và hỏi bạn đâu là hình ảnh của một máy tính chẳng hạn. Mọi thứ nghe có vẻ rất đơn giản nhưng sâu bên trong là hệ thống theo dõi và đánh giá hành vi người dùng từ đó phân biệt được đâu là người dùng thật đâu là công cụ spam.

2. Cách hoạt động của reCAPTCHA

So với các phần mềm nhận dạng khác, reCAPTCHA yêu cầu người dùng phải nhập 2 chữ cái khác nhau thay vì 1 chữ.

Và cũng không giống các CAPTCHA còn lại, reCAPTCHA không tự động “tạo” những chữ khó nhìn để đánh đố người dùng mà lấy hẳn hình ảnh từ các văn bản vật lý (sách, báo, tờ rơi…) mà phần mềm nhận diện mặt chữ (Optical Character Recognition – OCR) không thể giải quyết được.

Các phần mềm OCR luôn được sử dụng để chuyển các trang sách, tạp chí, bài báo từ bản in sang bản điện tử để lưu trữ cũng như phân phối.

Nhưng OCR cũng chỉ là một phần mềm “bắt chước” khả năng đọc của con người, nếu như trang giấy có dấu hiệu sờn, cũ hoặc xuống cấp, OCR sẽ ngay lập tức không nhận diện được, dù một người bình thường có thể dễ dàng nhận ra chữ đó là gì.

Trong 2 chữ mà chương trình này “thách thức” người dùng, một chữ đã được nhận diện và lưu trong kho dữ liệu, một chữ còn lại sẽ đến từ danh sách các từ mà OCR không đọc được ở trên.

Nếu có ít nhất 6 người dùng cùng sử dụng một chữ để thay thế cho hình ảnh mà OCR không nhận diện được, reCAPTCHA sẽ xem nó như là một từ đã được “điện tử hóa” thành công.

reCAPTCHA giá trị như thế nào?

Với khả năng đọc chữ chính xác như vậy, reCAPTCHA đã được tờ báo danh tiếng New York Times thuê để điện tử hóa tất cả bài viết cũ. Và chỉ vài tháng sau đó, tất cả bài viết của New York Times trong vòng 20 năm trước khi máy tính xuất hiện đã được reCAPTCHA điện tử hóa dễ dàng.

Sau 1 năm hoạt động, reCAPTCHA đã điện tử hóa thành công hơn 440 triệu từ, tương đương với gần 17.600 quyển sách!

Vào năm 2009, Google đã chi ra một khoản tiền lớn (theo dự đoán ít nhất là 30 triệu USD) mua lại reCAPTCHA để sử dụng cho Google Books, biến đây trở thành thư viện điện tử lớn nhất thế giới chỉ sau vài năm.

recaptcha

Ngoài ra, reCAPTCHA còn được Google sử dụng cho nhiều mục đích khác như giải mã số nhà, biển tên đường trên Google Maps Street View hoặc phân biệt các phương…

Google nhanh chóng chứng minh được rằng việc thu mua reCAPTCHA là điều hoàn toàn đúng đắn. Chỉ một thời gian ngắn, Google đã thu lại vốn mua reCAPTCHA qua các ứng dụng trên.

3. Cách triển khai của Google về reCAPTCHA

Để có thể bắt đầu implements Google reCaptcha trước hết ta cần phải tạo 1 API key. Truy cập vào trang bạn sẽ được yêu cầu đăng kí website của bạn và version của reCAPTCHA.

recaptcha

Sau khi submit thì Google sẽ cung cấp cho bạn 1 Site key và 1 Secret key:

Chú ý chọn loại reCAPTCHA:

  • reCAPTCHA v3: Đây lòa loại mới nhất và với kiểu captcha này sẽ không cần bất cứ một thao tác nào của người dùng mà Google sẽ tự xác minh và trả về 1 token cho site. Ta gửi token đó lên server để verify xem người dùng có hợp lệ hay không
  • reCAPTCHA v2: Đây là version cũ của reCAPTCHA mà ta vẫn hay thường gặp. reCAPTCHA v2 yêu cầu người dùng click vào một checkbox xác minh “Tôi không phải là người máy”. Hoặc có 1 cách vẫn ẩn được checkbox đó là option “Invisible” ở phía trên. Khi đó sẽ dựa vào button submit form để đồng thời gửi lên cả token lên server để xác minh.

3.1 reCAPTCHA v3

Tiếp theo mình sẽ demo reCAPTCHA v3 trước nhé:

Và việc tiếp theo bạn cần làm là tích hợp reCAPTCHA vào trang web của bạn ở client. Thêm đoạn script sau:

<script src=’https://www.google.com/recaptcha/api.js?render=6LfGv3wUAAAAAG1AvsBtfcss7FPsBPTFnGFQt4yZ’></script>

<script>

grecaptcha.ready(function() {

grecaptcha.execute(‘6LfGv3wUAAAAAG1AvsBtfcss7FPsBPTFnGFQt4yZ’, {action: ‘register’})

.then(function(token) {

alert(token);

// Verify the token on the server.

});

});

</script>

Flow của nó sẽ diễn ra như sau:

1. Thêm Javascript api với site key của bạn

2. Gọi hàm grecaptcha.execute trên một hành động hoặc khi tải trang

3. Gửi token được generate từ server google cho backend để verify

Minh họa thử với 1 trang đăng kí người dùng viết bằng Laravel nhé. Tạo nhanh trang đăng nhập đăng kí bằng command: php artisan make:auth. Ở file rescources/views/auth/register.blade.php ta thêm đoạn script đã viết ở trên. Chú ý để chạy được bạn cần tạo virtual host cho project đang chạy giống như site mà bạn đã set trên trang admin recaptcha nhé. Ví dụ chúng tôi đã setup virtual host là . recaptcha là gì

Như vậy sau khi đã có token thì việc tiếp theo cần làm là gửi token đó lên server và xác nhận xem đó có phải là token hợp lệ hay không. Để xử lý việc này bên backend Semtek sẽ sử dụng thư viện google/recaptcha. Cài đặt bằng cách dùng composer

composer require google/recaptcha “^1.2”

Và hàm check token recaptcha như sau:

public function verify(Request $request)

{

$token = $request->get(‘token’);

$recaptcha = new \ReCaptcha\ReCaptcha(‘6LfGv3wUAAAAADQxyh5cTOo4hp5QugwEI1LOMO0V’);

$resp = $recaptcha->setExpectedHostname($request->getHost())

->setExpectedAction(‘register’)

->verify($token, $request->ip());

if ($resp->isSuccess()) {

// Verified!

} else {

$errors = $resp->getErrorCodes();

}

}

Như vậy nếu token hợp lệ thì action tiếp tục được thực hiện còn nếu không thì mình sẽ trả lỗi về cho client là “Bạn là 1 spammer”.

3.2 reCAPTCHA v2

Tiếp tục Semtek sẽ thử implements reCAPTCHA v2. Quay lại bước đăng kí API key ở trên bạn nhớ chọn loại reCAPTCHA v2 nhé.

Sau khi đã có Site key và Secret key mới ta chỉnh sửa 1 chút ở file register.blade.php: Thêm script load api:

<script src=’https://www.google.com/recaptcha/api.js’></script>

Thêm div để generate checkbox

<div class=”g-recaptcha” data-sitekey=”6LeCyXwUAAAAAENIyDkZM5ZpNglmqrgjmdrDSVtv”></div>

Ta có kết quả như sau:

Sau khi click vào ô checkbox thì form register sẽ tự động thêm 1 input là g-recaptcha-response chính là token mà google trả về khi click vào checkbox. Semtek gửi kèm token này lên server để check. Bên server side thì xử lý như ở trên.

4. Bí mật từ reCAPTCHA – không chỉ để chống spam recaptcha

Người dùng Internet đã quá quen thuộc với CAPTCHA, một công đoạn phiền toái khi lướt web để chứng minh người dùng là người thật chứ không phải robot.

Thuật ngữ CAPTCHA là viết tắt của Hệ thống Tự động Phân biệt Con người và Máy tính (Completely Automated Public Turing test to tell Computers and Humans Apart) do Luis von Ahn, tại Đại học Carnegie Mellon sáng tạo ra vào năm 2007.

CAPTCHA khá hiệu quả trong việc phòng tránh các cuộc tấn công từ chối dịch vụ hàng loạt hoặc đánh cắp dữ liệu và đặc biệt là chương trình này hoàn toàn miễn phí nên được rất nhiều trang web sử dụng.

Nhà sáng lập Luis nhận ra rằng, để hoàn tất một mẫu CAPTCHA mỗi người chỉ tốn vài giây, nhưng nếu tính tổng cộng số người dùng khổng lồ trên Internet thì có tới hàng trăm giờ lao động “lãng phí” đang đổ vào CAPTCHA mỗi ngày. Chính vì vậy, Luis đã cho ra đời reCAPTCHA nhằm tận dụng những giờ lao động quý giá này.

Về cơ bản, reCAPTCHA vẫn là một chương trình CAPTCHA thông thường và hoàn toàn miễn phí, dễ sử dụng. Rất nhanh chóng, reCAPTCHA đã được các chủ sở hữu website sử dụng làm chương trình phòng vệ mặc định. Nhưng ít ai biết rằng, đằng sau chương trình miễn phí này là cả một mô hình kinh doanh “thiên tài”, đang biến hàng chục triệu người dùng Internet thành những “cỗ máy đánh chữ” mà họ không hề hay biết.


P.A Việt Nam cung cấp đa dạng các Plan Hosting đáp ứng yêu cầu của khách hàng
Hosting Phổ Thông
Hosting Chất Lượng Cao

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Tham khảo các bài viết khác về hosting cPanel : https://kb.pavietnam.vn/category/linux-hosting/whm-cpanel

Rate this post