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:

  1. captcha.New(): Tạo một Captcha ID mới.
  2. captcha.WriteImage: Chuyển Captcha ID thành hình ảnh và gửi đến trình duyệt người dùng.
  3. http.HandleFunc: Đăng ký các hàm xử lý (handler) cho các endpoint.
  4. 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.
Tags: Golang, Captcha


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cách tách chuỗi trong Golang bằng hàm SplitAfter

Hướng dẫn cách sử dụng hàm `SplitAfter` trong Golang để tách chuỗi dựa trên một ký tự hoặc một chuỗi con nhất định. Bài viết này sẽ giải thích chi tiết cách hàm này hoạt động và ví dụ cụ thể.
Cách UPDATE dữ liệu database MySQL bằng Golang

Hướng dẫn cách cập nhật dữ liệu trong MySQL database bằng Golang sử dụng Prepared Statements với nhiều tham số để đảm bảo tính bảo mật và hiệu quả.
Các chức năng thường dùng khi sử dụng Selenium Chrome trong Golang

Bài viết này tổng hợp các chức năng thường dùng khi làm việc với Selenium Chrome trong Golang, bao gồm cách cài đặt, tạo phiên làm việc, điều hướng trang web, và tương tác với các phần tử trên trang.
Xác thực JSON Web Token (JWT) với Golang

Hướng dẫn cách sử dụng JSON Web Token (JWT) để xác thực người dùng trong ứng dụng Golang. Bài viết sẽ trình bày chi tiết cách tạo, ký và xác minh token JWT để bảo mật API.
Xử lý đa luồng trong Golang bằng Goroutine

Hướng dẫn cách xử lý đa luồng trong Golang bằng cách sử dụng Goroutine, giúp tối ưu hóa hiệu suất và tận dụng khả năng xử lý song song của CPU.
Cách truyền Authentication Header Token khi POST dữ liệu tới API bằng Golang

Hướng dẫn cách truyền Authentication Header Token khi gửi yêu cầu POST dữ liệu tới API bằng Golang. Bài viết này sẽ giúp bạn hiểu cách làm việc với HTTP request, thêm token vào Header để xác thực và gửi dữ liệu tới API.
Cách lấy dữ liệu JSON từ API bằng Golang

Bài viết này hướng dẫn cách lấy dữ liệu JSON từ API sử dụng ngôn ngữ lập trình Golang, giúp bạn hiểu rõ hơn về cách tương tác với các dịch vụ web.
Cách chia chuỗi trong Golang bằng hàm SplitAfterN

Hướng dẫn cách sử dụng hàm `SplitAfterN` trong Golang để chia chuỗi dựa trên ký tự phân tách và giới hạn số phần tử được chia. Hàm này hữu ích khi cần chia chuỗi nhưng vẫn giữ nguyên ký tự phân tách.
Cách POST data tới API bằng Golang

Bài viết này hướng dẫn cách gửi dữ liệu tới API bằng phương thức POST trong Golang, giúp bạn hiểu rõ hơn về cách tương tác với các dịch vụ web.
Cách chuyển đổi chuỗi Markdown sang HTML bằng Golang

Hướng dẫn chi tiết cách chuyển đổi một chuỗi Markdown sang HTML trong Golang bằng cách sử dụng thư viện `blackfriday`.

Đã thêm vào giỏ hàng