Tạo mã Captcha bằng Golang
Hướng dẫn chi tiết cách tạo mã Captcha bằng Golang để bảo vệ ứng dụng web khỏi các cuộc tấn công tự động và bot.
Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo mã Captcha đơn giản bằng cách sử dụng thư viện github.com/dchest/captcha
trong Golang. Bài viết cung cấp ví dụ minh họa dễ hiểu giúp bạn tích hợp Captcha vào ứng dụng web của mình.
Mã Golang:
package main
import (
"net/http"
"github.com/dchest/captcha"
)
func captchaHandler(w http.ResponseWriter, r *http.Request) {
captchaID := captcha.New()
http.ServeFile(w, r, "./index.html")
}
func captchaImageHandler(w http.ResponseWriter, r *http.Request) {
captchaID := r.URL.Query().Get("id")
captcha.WriteImage(w, captchaID, 240, 80)
}
func main() {
http.HandleFunc("/captcha", captchaHandler)
http.HandleFunc("/captcha/image", captchaImageHandler)
http.Handle("/captchaFiles/", http.StripPrefix("/captchaFiles/", http.FileServer(http.Dir("./"))))
http.ListenAndServe(":8080", nil)
}
index.html
<!DOCTYPE html>
<html>
<head>
<title>Captcha Demo</title>
</head>
<body>
<h1>Captcha Example</h1>
<form action="/verify" method="post">
<img src="/captcha/image?id={{.CaptchaID}}" alt="Captcha Image">
<input type="text" name="captcha" placeholder="Enter Captcha">
<input type="submit" value="Submit">
</form>
</body>
</html>
Giải thích chi tiết từng dòng code:
-
captcha.New()
: Tạo một Captcha ID mới. -
captcha.WriteImage
: Chuyển Captcha ID thành hình ảnh và gửi đến trình duyệt người dùng. -
http.HandleFunc
: Đăng ký các hàm xử lý (handler) cho các endpoint. -
http.ListenAndServe(":8080", nil)
: Khởi động server trên cổng 8080.
Yêu cầu hệ thống:
- Golang 1.15 trở lên
- Thư viện
github.com/dchest/captcha
Cách cài đặt các thư viện để chạy được đoạn mã Golang trên:
Chạy lệnh:
go get github.com/dchest/captcha
Lời khuyên:
- Đảm bảo cập nhật thư viện
captcha
để tránh các lỗ hổng bảo mật. - Điều chỉnh kích thước Captcha sao cho phù hợp với giao diện người dùng.