CAPTCHA What? Why? Build. Break.
Bài đăng này đã không được cập nhật trong 3 năm
Trong quá trình sử dụng các website, chắc hẳn không ít lần các bạn đã phải nhập captcha để tiếp tục các tác vụ. Dù yêu hay ghét thì captcha cũng đã và đang là một phần không thể thiếu của các website, trong bài viết này, chúng ta sẽ tìm hiểu xem captcha là gì và nó hoạt động như thế nào. Bài viết được tham khảo từ nguồn blog.
I. Captcha là gì? Captcha là một cụm từ được ghép từ những chữ cái đầu của các từ sau:
**C **| ompletely
A | utomated
P | ublic
T | uring test to tell
C | omputers and
H | umans
A | part
Chức năng cơ bản của captcha là ngăn chặn các spammers, bots, và tấn công kiểu brute force, nói cách khác nó được dùng để ngăn chặn các kiểu tấn công spam và các con bot. Về lý thuyết, 1 thiết kế captcha tốt có tỉ lệ trả lời đúng với con người là trên 70% và với các con bot máy tính là dưới 1%. Tuy nhiên trên thực tế, 1% là tỉ lệ ngắn chặn tuyệt vời với con người, nhưng với các hệ thống máy tính có khả năng gửi hàng ngàn request một phút nó lại không phải vấn đề.
Các captcha dùng phổ biến nhất là các biến thể văn bản, trong đó các hình ảnh có chứa các văn bản được bóp méo bằng cách , kéo, xoắn, thêm màu sắc và trong suốt như những hình dưới đây.
Ngoài ra còn một số dạng captcha khác như chọn các ảnh theo chủ đề, lấy ra các mã từ ảnh GIF, trả lời các câu hỏi toán học... Trong khi các hình thức gõ captcha có vẻ rất phức tạp thì điều đáng buồn là nó vẫn có thể bị vượt qua, chúng ta sẽ cùng tìm hiểu các phương pháp đằng sau việc tạo ra một captcha thành công.
Có khá nhiều cách để thiết kế một CAPTCHA, tất cả đều đòi hỏi một tập hợp dữ liệu trả lời tương ứng với các câu hỏi được đưa ra. Một số trong những CAPTCHA phức tạp hơn sử dụng các hình ảnh quét vào một cơ sở dữ liệu bằng tay và sau đó bị bóp méo đi, những hình ảnh méo mó sau đó được xác nhận bởi một số lượng lớn các cá nhân có thể đồng ý về nội dung của hình ảnh. Bạn có thể tìm hiểu chi tiết hơn phương pháp này ở đây.
Với những hình ảnh này, reCAPTCHA có người dùng xem và trả lời thử thách các kí tự của hình ảnh, nó gồm 2 từ được đặt cạnh nhau. Từ đầu tiên là một từ đã được "verified", nghĩa là hệ thống đã lưu câu trả lời cho từ này. Hình ảnh thứ hai trong CAPTCHA không được "verified", câu trả lời của nó là 1 "vetted", nghĩa là nó có thể được hiệu đính. Điều này có nghĩa là người dùng chỉ cần nhập câu trả lời cho hình ảnh đầu tiên chính xác họ sẽ vượt qua CAPTCHA mà không phụ thuộc vào câu trả lời vào thứ hai. Hình ảnh thứ hai trong CAPTCHA phải đạt được một số lượng lớn các câu trả lời giống nhau, được đưa ra bởi một số lượng lớn người dùng đã trả lời đúng hình ảnh đầu tiên. Bằng cách này, các hệ thống tin rắng bạn đã trả lời đúng từ đầu tiên nghĩa là bạn đúng là người sủ dụng chứ không phải các con bots, vì vậy câu trả lời cho từ thứ 2 của bạn sẽ có độ chính xác cao hơn, và khi số lượng câu trả lời cho từ thứ 2 vượt qua một ngưỡng nào đó do hệ thông đặt ra, nó sẽ trở thành từ khóa được "verified" để dùng cho các câu captcha khác, và cứ như thế lặp đi lặp lại, số từ khóa trong hệ thống sẽ được tăng lên nhiều hơn.
Việc thiết kế một hệ thống captcha như vậy khá phức tạp, vì vậy đa số lập trình viên thường sử dụng các hệ thống captcha sẵn có để cài đặt vào hệ thống của mình. Tất nhiên bạn nên tham khảo và sử dụng các hệ thống uy tín để đám bảo an toàn cho hệ thống của mình. Bạn có thể tìm hiểu thêm về các hệ thống như vậy ở đây
II. Có thể vượt qua được captcha như thế nào?
Chúng ta có 2 cách cơ bản để vượt qua captcha:
- OCR Tự động đọc và trả lời captcha.
- Human "farms" captcha.
OCR là viết tắt của cụm từ Optical Character Recognition, là một công nghệ được tạo ra để đọc các kí tự scan được từ một văn bản hoặc hình ảnh, vì vậy có thể hiểu nó là một cố máy giúp đọc, thao tác, tìm kiếm và lưu trữ dữ liệu hiệu quả hơn. Cũng như các công nghệ khác, OCR được thiết kế để học hỏi và tương thích với nhiều mục đích khác nhau. Với captcha, phần mềm OCR đã được huấn luyện để cố gắng nhận dạng mẫu kí tự tương tự như con người, công nghệ này sử dụng AI, đây là một vấn đề chuyên sâu khác nên chúng ta không bàn đến trong bài viết này, hiện nay đã có một số website sử dụng OCR để vượt qua captcha miễn phí, các bạn có thể tham khảo thêm.
Một phương pháp thường được sử dụng để bỏ qua CAPTCHA trên một quy mô lớn là Human "farms".
Các câu hỏi captcha được gửi đi cho một số người chuyên gõ captcha "cày cuốc", sau đó gửi lại kết quả cho một bên thứ ba và sau đó gửi lại cho ứng dụng yêu cầu đáp án captcha, bằng cách này mã captcha bị vượt qua với số lượng lớn. Những người gõ captcha này kiếm được một khoản từ vài cent đến vài $ cho 1000 captcha, để kiếm được 200$, bạn sẽ phải gõ khoảng 200.000 captcha, một con số khá khổng lồ (hehe). Có thể thấy không phải tốn kém quá nhiều cho việc vượt qua rất nhiều captcha đúng không .
III. Tổng kết Nếu hệ thống của bạn đang bị tấn công một cách có chủ ý và mạnh mẽ, catpcha không phải là sự lựa chọn an toàn. Nó không hoàn toàn vô dụng nhưng hiện tại cũng tỏ ra kém hiệu quả và dễ bị vượt qua.
Điều tốt nhất bạn có thể làm là cố gắng để ngăn chặn các cuộc tấn công ngay từ đầu, một ví dụ điển hình là tính năng "noCAPTCHA reCAPTCHA" mà chúng ta sẽ tìm hiểu trong bài viết sau.
Cảm ơn các bạn đã theo dõi bài viết
All rights reserved