Giới thiệu dự án

Trong bối cảnh kỷ nguyên số bùng nổ, các ứng dụng web đóng vai trò huyết mạch trong mọi hoạt động kinh doanh, tài chính, giáo dục và giải trí. Tuy nhiên, theo các thống kê an ninh mạng toàn cầu (như OWASP Top 10 và các báo cáo an ninh của CVE/NIST), hơn 75% các cuộc tấn công mạng nhắm trực tiếp vào tầng ứng dụng web. Những lỗ hổng bảo mật phổ biến như Cross-Site Scripting (XSS), SQL Injection (SQLi), Cross-Site Request Forgery (CSRF), Tấn công từ chối dịch vụ (DoS/DDoS), Session Hijacking và Vét cạn mật khẩu (Brute-Force) tiếp tục gây ra những thiệt hại nặng nề về tài chính, uy tín thương hiệu và dữ liệu cá nhân của người dùng.

Đồ án tốt nghiệp "Các tấn công và giải pháp bảo mật web" do sinh viên Trần Công Hậu và Võ Thế Vinh thực hiện dưới sự hướng dẫn của ThS. Nguyễn Thị Thanh Vân tại Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) tập trung giải quyết bài toán cấp bách này: Phân tích tường tận cơ chế khai thác các lỗ hổng web nguy hiểm, xây dựng hệ thống thực nghiệm mô phỏng toàn diện trên nền tảng ngôn ngữ lập trình hiệu năng cao (Golang) kết hợp cơ sở dữ liệu MySQL, và phát triển các module phòng thủ chuyên sâu, đa tầng.

+-----------------------------------------------------------------------------------+
|                            CÁC MỤC TIÊU CỐT LÕI CỦA ĐỒ ÁN                         |
+-----------------------------------------------------------------------------------+
| 1. Hệ thống hóa cơ sở lý thuyết và bản chất kỹ thuật của 6 dạng tấn công web     |
| 2. Thiết kế và phát triển ứng dụng Web hoàn chỉnh bằng Golang và MySQL             |
| 3. Xây dựng môi trường thực nghiệm tấn công có kiểm soát (Lab Exploitation)        |
| 4. Lập trình các module phòng thủ ứng dụng, Middleware & Cấu hình Reverse Proxy    |
| 5. Đo lường, kiểm thử hiệu năng và xác thực độ an toàn sau khi triển khai vá lỗi  |
+-----------------------------------------------------------------------------------+

Phương pháp tiếp cận của đồ án là kết hợp phương pháp nghiên cứu tài liệu chuẩn quốc tế với phương pháp thực nghiệm sản phẩm hoạt động trực tiếp. Bằng việc xây dựng một hệ thống website giải trí/xem phim trực tuyến thực tế, nhóm nghiên cứu thiết lập các kịch bản tấn công thực tế và kiểm chứng trực tiếp hiệu quả của các giải pháp phòng chống được tích hợp từ tầng mạng, tầng máy chủ biên (Reverse Proxy Nginx) đến tầng mã nguồn và cơ sở dữ liệu.

Phạm vi nghiên cứu tập trung vào các giao thức ứng dụng Web (HTTP/HTTPS), cấu trúc kiến trúc Client-Server, mô hình cơ sở dữ liệu quan hệ, và các cơ chế phòng thủ trực tiếp trên Golang runtime và Nginx Server, loại trừ các tấn công can thiệp phần cứng vật lý chuyên dụng.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nhiều doanh nghiệp và nhà phát triển ứng dụng web vẫn duy trì các phương pháp tiếp cận chắp vá khi đối mặt với các nguy cơ bảo mật. Bảng phân tích dưới đây thể hiện sự so sánh giữa các phương pháp tiếp cận an ninh web hiện nay:

Phương pháp giải pháp Ưu điểm Nhược điểm Chi phí & Độ phức tạp
Vá lỗi cục bộ (Ad-hoc Patching) Nhanh, xử lý tức thời khi phát sinh lỗi Dễ sót lỗ hổng tương tự, không có tính hệ thống Thấp ban đầu, cực cao về dài hạn
Sử dụng WAF phần cứng độc lập Bảo vệ tự động ở tầng mạng, không sửa code Chi phí đắt đỏ, không ngăn được logic bypass, độ trễ mạng Rất cao, cấu hình phức tạp
Phòng thủ đa tầng theo chiều sâu (Defense in Depth - Đề xuất) Triệt tiêu lỗi từ mã nguồn, tối ưu hóa Middleware, kết hợp Nginx WAF Đòi hỏi lập trình viên nắm vững Secure Coding, cấu hình chuẩn hóa Chi phí tối ưu, hiệu năng cao, bảo vệ bền vững

Dựa trên mô hình phân loại yêu cầu MoSCoW, hệ thống bảo mật được định hình:

  • Must Have (Bắt buộc phải có): Cơ chế chống SQL Injection qua Parameterized Queries; Mã hóa/Escape dữ liệu chống XSS; Triển khai Synchronizer Token chống CSRF; Cơ chế khóa tài khoản/chống Brute-Force; Session Management an toàn.
  • Should Have (Nên có): Cơ chế Rate Limiting tại Nginx ngăn chặn HTTP POST Flood DoS; Thiết lập cờ HttpOnly, Secure, SameSite cho Cookies.
  • Could Have (Có thể mở rộng): Tích hợp CAPTCHA động cho các form xác thực nhạy cảm; Lưu vết kiểm toán (Audit Logs).
  • Won't Have (Chưa thực hiện trong giai đoạn này): Tường lửa phân tích hành vi AI/Machine Learning thời gian thực.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình 3 tầng phân tán có bổ sung các lớp lọc an ninh trung gian:

[ Client Browser ] 
       │ (HTTPS Request / Cookies)
       ▼
[ Nginx Reverse Proxy (v1.18+) ] ── (Rate Limiting / DDoS Mitigation / SSL Termination)
       │
       ▼
[ Golang Web Server (net/http & Custom Middlewares) ]
  ├── CSRF Validation Token Interceptor
  ├── Input Sanitizer & Context-aware HTML Escaping
  ├── Session Security Manager (UUID v4 + Regeneration)
  └── Rate Limiter / Account Lockout Service
       │
       ▼
[ Database Layer: MySQL Server (v5.7 / v8.0) ]
  └── Parameterized Prepared Statements Engine

Ngăn xếp công nghệ (Technology Stack)

  • Ngôn ngữ lập trình Backend: Golang (Go v1.12+) – tận dụng ưu thế biên dịch mã máy trực tiếp, hiệu năng cao, cơ chế Goroutine xử lý đồng thời lớn với tài nguyên bộ nhớ tối thiểu.
  • Hệ quản trị cơ sở dữ liệu: MySQL Server (v5.7+) – hỗ trợ giao dịch ACID, chỉ mục InnoDB và cơ chế Prepared Statements chuẩn.
  • Máy chủ biên / Tường lửa: Nginx (v1.18+) – đóng vai trò Reverse Proxy, cân bằng tải và phòng chống tấn công DoS/DDoS lớp ứng dụng (Layer 7).
  • Frontend Interface: HTML5, CSS3, JavaScript (ES6), Bootstrap Framework.

Thiết kế cơ sở dữ liệu (Database Schema)

Hệ thống quản lý thông tin thông qua 5 thực thể chính:

  1. users (id, username, password_hash, email, role, failed_attempts, locked_until, created_at)
  2. movies (id, title, description, thumbnail, video_url, release_year, created_at)
  3. movie_details (id, movie_id, director, cast, duration, genre)
  4. comments (id, user_id, movie_id, content, created_at)
  5. likes (id, user_id, comment_id, created_at)

Methodology

Đồ án được triển khai theo mô hình phát triển lặp kết hợp khung đánh giá an ninh bảo mật 5 giai đoạn kéo dài trong 18 tuần:

Tuần 1-4: Xác định bài toán & Nghiên cứu lý thuyết các kỹ thuật tấn công
     │
     ▼
Tuần 5-7: Thiết kế kiến trúc & Xây dựng website nền tảng bằng Golang/MySQL
     │
     ▼
Tuần 8-10: Xây dựng các kịch bản tấn công thực nghiệm (Exploit Modules)
     │
     ▼
Tuần 11-14: Lập trình các module phòng thủ, tích hợp Middleware & Nginx Proxy
     │
     ▼
Tuần 15-18: Kiểm thử nghiệm thu (Benchmarking), Tinh chỉnh & Viết báo cáo

Implementation và kết quả

Development process & Key Security Implementations

Hệ thống được phát triển với các module xử lý chuyên sâu nhằm loại bỏ tận gốc từng nhóm lỗ hổng:

1. Cơ chế phòng thủ SQL Injection

Thay vì nối chuỗi trực tiếp (fmt.Sprintf), hệ thống bắt buộc sử dụng truy vấn tham số hóa (Parameterized Queries / Prepared Statements) thông qua thư viện database/sql của Golang. Driver sẽ tự động phân tách câu lệnh SQL và dữ liệu đầu vào, vô hiệu hóa hoàn toàn các kỹ thuật như Inline Injection, Terminating Injection (--, /*), và Blind SQL Injection.

// Secure Implementation: Phòng ngừa hoàn toàn SQL Injection
func GetMovieByID(db *sql.DB, movieID string) (*Movie, error) {
    query := "SELECT id, title, description, video_url FROM movies WHERE id = ?"
    stmt, err := db.Prepare(query)
    if err != nil {
        return nil, err
    }
    defer stmt.Close()

    var m Movie
    err = stmt.QueryRow(movieID).Scan(&m.ID, &m.Title, &m.Description, &m.VideoURL)
    if err != nil {
        return nil, err
    }
    return &m, nil
}

2. Cơ chế phòng thủ Cross-Site Scripting (XSS)

Triển khai kỹ thuật Context-Aware Data Escaping trước khi hiển thị dữ liệu ra giao diện trình duyệt. Sử dụng hàm html.EscapeString của Golang để mã hóa các ký tự đặc biệt (<, >, &, ", ') thành các thực thể HTML (&lt;, &gt;, &amp;, &#34;, &#39;). Đồng thời, cấu hình HTTP Header Content-Security-Policy (CSP) để chặn việc thực thi inline script trái phép.

// Secure Implementation: Lọc và mã hóa dữ liệu đầu ra ngăn chặn Stored/Reflected XSS
func SafeRenderComment(input string) string {
    sanitizedInput := html.EscapeString(input)
    return sanitizedInput
}

3. Cơ chế phòng thủ Cross-Site Request Forgery (CSRF)

Triển khai Middleware tạo và kiểm tra Synchronizer Token:

  • Mỗi khi người dùng render form, server sinh ra một chuỗi token ngẫu nhiên mã hóa bằng crypto/rand và lưu trong Session.
  • Khi có request POST/PUT/DELETE, Middleware so khớp giá trị token gửi lên từ header/body với giá trị trong Session. Nếu không trùng khớp, request lập tức bị từ chối với mã lỗi 403 Forbidden.
// Secure Implementation: Middleware xác thực CSRF Token
func CSRFMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if r.Method == http.MethodPost || r.Method == http.MethodPut || r.Method == http.MethodDelete {
            sessionToken := GetSessionCSRFToken(r)
            formToken := r.FormValue("csrf_token")
            
            if sessionToken == "" || subtle.ConstantTimeCompare([]byte(sessionToken), []byte(formToken)) != 1 {
                http.Error(w, "Invalid or missing CSRF Token", http.StatusForbidden)
                return
            }
        }
        next.ServeHTTP(w, r)
    })
}

4. Cơ chế phòng thủ DoS/DDoS và Brute-Force

  • Tầng Web Server: Sử dụng cơ chế Rate Limiting dựa trên thuật toán Leaky Bucket để giới hạn số lượt đăng nhập sai (tối đa 5 lần/phút/IP, khóa tài khoản tạm thời trong 15 phút).
  • Tầng Nginx Reverse Proxy: Cấu hình module ngx_http_limit_req_module để chặn tấn công HTTP POST Flood.
# Cấu hình Nginx chống DoS / HTTP POST Flood
limit_req_zone $binary_remote_addr zone=login_limit:10m rate=5r/m;
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=30r/s;

server {
    listen 80;
    server_name example.com;

    location /login {
        limit_req zone=login_limit burst=3 nodelay;
        proxy_pass http://127.0.0.1:8080;
    }

    location / {
        limit_req zone=api_limit burst=50 nodelay;
        proxy_pass http://127.0.0.1:8080;
    }
}

5. Phòng thủ Session Hijacking

  • Thiết lập thuộc tính Cookie an toàn: HttpOnly = true (ngăn JavaScript đọc Cookie), Secure = true (chỉ truyền qua HTTPS), SameSite = Strict.
  • Tái tạo định danh Session ID (Session Fixation Mitigation) ngay sau khi người dùng đăng nhập thành công.

Testing và validation

Hiệu quả của hệ thống phòng thủ được kiểm thử thông qua các công cụ chuyên dụng (OWASP ZAP, SQLmap, Apache Benchmark, Burp Suite):

Kịch bản kiểm thử Công cụ thực hiện Trạng thái trước khi bảo vệ Trạng thái sau khi triển khai bảo vệ Tỷ lệ ngăn chặn
SQL Injection (Auth Bypass & Blind) SQLmap v1.4 / Custom Script Bị bypass đăng nhập, rò rỉ dữ liệu bảng users Lệnh SQL bị trơ, chỉ nhận giá trị chuỗi thuần 100%
Stored & Reflected XSS Burp Suite v2.0 / XSS Payloads Thực thi alert(document.cookie) trên client Payload được escape thành chuỗi an toàn 100%
CSRF Transaction Forgery Auto-submitting HTML Form Thực hiện đổi mật khẩu trái phép thành công Bị chặn bởi HTTP 403 (Invalid Token) 100%
Brute-Force Login Hydra v9.1 / Python Script 1.000 req/s, tìm ra mật khẩu yếu Sau 5 lần thử sai, IP bị khóa 15 phút 100%
HTTP Flood DoS Apache Benchmark (ab) Máy chủ cạn kiệt tài nguyên CPU/RAM, sập kết nối Nginx phản hồi mã 503 cho request vượt ngưỡng, CPU ổn định < 20% 99.5%

Kết quả đạt được

Hệ thống đã hoàn thiện 100% các tính năng đặt ra từ ban đầu:

  1. Về mặt chức năng: Hoàn thiện đầy đủ cổng thông tin người dùng (xem phim, bình luận, tương tác, tìm kiếm) và cổng quản trị hệ thống (quản lý người dùng, phân quyền, kiểm duyệt nội dung phim).
  2. Về mặt hiệu năng an ninh: Độ trễ trung bình do các Middleware bảo mật (CSRF, Sanitizer, Session Validator) thêm vào chỉ dao động từ 1.2ms đến 2.8ms, hoàn toàn đáp ứng tiêu chuẩn trải nghiệm người dùng tốc độ cao.
  3. Về độ tin cậy: Hệ thống chịu được tải 2.500 requests/giây trong điều kiện kiểm thử chịu tải thông thường và tự động lọc bỏ các luồng request tấn công bất thường.

Đổi mới và đóng góp

  • Tính toàn diện trong một nền tảng thống nhất: Đồ án không chỉ dừng lại ở phân tích lý thuyết mà đã hiện thực hóa trọn vẹn cả hai mặt đối lập của an toàn thông tin: Xây dựng module tấn công thực tế (Offensive)Phát triển module phòng thủ triệt để (Defensive) trên cùng một hệ thống mã nguồn.
  • Tận dụng tối đa sức mạnh kiến trúc của Golang: Thay vì dựa vào các framework cồng kềnh với nhiều lớp trừu tượng gây suy giảm hiệu năng, giải pháp xây dựng các custom middleware nhẹ, tận dụng kiểu dữ liệu chuẩn và cơ chế đồng thời Goroutines, giúp giảm mức tiêu hao RAM hơn 60% so với các ứng dụng nền tảng PHP/Python tương đương.
  • Mô hình phòng thủ liên tầng Nginx - Go - MySQL: Thiết lập kiến trúc phối hợp hiệu quả giữa máy chủ biên và ứng dụng nội bộ, giúp xử lý các tấn công từ chối dịch vụ từ sớm ở tầng mạng trước khi chúng chạm vào tầng logic nghiệp vụ của backend.

Ứng dụng thực tế và triển khai

Trường hợp sử dụng thực tế (Use Cases)

  • Cổng thông tin & Nền tảng xem phim/truyền thông số: Nơi có tần suất người dùng tương tác cao (bình luận, đánh giá) - môi trường lý tưởng mà tin tặc thường lợi dụng để cấy mã độc XSS hoặc khai thác CSRF.
  • Hệ thống Thương mại Điện tử vừa và nhỏ: Bảo vệ các giao dịch chuyển khoản, thêm/sửa/xóa sản phẩm và thông tin thanh toán của khách hàng khỏi lỗi rò rỉ dữ liệu SQL Injection.
  • Hệ thống cổng xác thực doanh nghiệp: Bảo vệ cổng đăng nhập tập trung trước các đợt tấn công dò quét mật khẩu tự động (Brute-Force / Credential Stuffing).

Hướng dẫn triển khai (Deployment Guide)

# 1. Cài đặt môi trường Golang và MySQL
sudo apt-get update && sudo apt-get install -y golang-go mysql-server nginx

# 2. Khởi tạo Cơ sở dữ liệu
mysql -u root -p < database/schema.sql

# 3. Biên dịch ứng dụng Golang
go build -o web_security_app main.go

# 4. Thiết lập Systemd Service để ứng dụng chạy ngầm
sudo cp scripts/web_app.service /etc/systemd/system/
sudo systemctl enable --now web_app

# 5. Cấu hình Nginx Reverse Proxy và Khởi động
sudo cp config/nginx_security.conf /etc/nginx/sites-available/default
sudo nginx -t && sudo systemctl restart nginx

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Chống DDoS dựa trên IP: Các chính sách Rate Limiting tại Nginx vẫn chủ yếu dựa trên địa chỉ IP client. Khi đối mặt với Botnet phân tán quy mô lớn (hàng triệu IP thật trên toàn cầu), hệ thống cần đến sự hỗ trợ của các dịch vụ CDN/Cloud chuyên dụng (như Cloudflare, AWS Shield).
  2. Khả năng tự động học hành vi: Cơ chế phát hiện lỗ hổng và lọc request hiện tại hoạt động theo quy tắc tĩnh (Rule-based), chưa có khả năng tự động học (Machine Learning) để nhận diện các biến thể payload zero-day tinh vi.

Hướng phát triển tương lai

  • Tích hợp giao thức OAuth 2.0 / OpenID Connect và cơ chế xác thực đa yếu tố (2FA/MFA - TOTP) để nâng cấp mức độ bảo mật danh tính người dùng.
  • Nghiên cứu áp dụng công nghệ WebAssembly (Wasm) để mã hóa và thực thi an toàn các logic kiểm tra tại phía Client.
  • Chuyển đổi kiến trúc sang dạng Microservices và quản lý an ninh liên dịch vụ thông qua Service Mesh (Istio / Envoy) với chuẩn giao tiếp gRPC được mã hóa mTLS.

Đối tượng hưởng lợi

  • Sinh viên ngành Công nghệ thông tin / An toàn thông tin: Có được tài liệu tham khảo chi tiết, bao gồm cả mã nguồn mẫu, kịch bản tấn công thực nghiệm và phương pháp lập trình an toàn để phục vụ học tập, nghiên cứu.
  • Lập trình viên Web (Web Developers): Nắm vững các nguyên tắc Secure Coding thực chiến trong Golang; hiểu rõ cơ chế bên dưới của Prepared Statements, Synchronizer CSRF Tokens và cách cấu hình Cookie an toàn.
  • Doanh nghiệp & Quản trị hệ thống (System Admins): Sở hữu giải pháp kiến trúc phòng thủ đa tầng hiệu năng cao với chi phí bản quyền bằng 0, dễ dàng áp dụng ngay trên máy chủ Linux/Nginx.

Câu hỏi thường gặp

1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?

Hệ thống yêu cầu tối thiểu 1 vCPU, 1GB RAM, và 10GB dung lượng ổ cứng chạy trên nền tảng Linux (Ubuntu 18.04/20.04/22.04 LTS), cài đặt sẵn Golang v1.12+ và MySQL v5.7+. Nhờ đặc tính biên dịch mã máy của Golang, hệ thống tiêu thụ cực kỳ ít tài nguyên máy chủ.

2. Giới hạn chịu tải của cơ chế phòng chống DoS trên Nginx là bao nhiêu?

Với cấu hình Rate Limiting đơn máy chủ, Nginx có thể xử lý và từ chối hơn 30.000 requests/giây ở tầng Layer 7 mà không làm ảnh hưởng đến tài nguyên của Golang Backend. Đối với các cuộc tấn công vượt ngưỡng 1 Gbps băng thông mạng, cần kết hợp giải pháp Anycast Routing hoặc Cloud WAF.

3. Có thể tích hợp các module bảo mật này vào dự án Golang hiện có không?

Hoàn toàn được. Các module phòng thủ (CSRF, XSS Sanitizer, Session Manager) được thiết kế dưới dạng chuẩn http.Handler Middleware của Golang, tương thích với hầu hết các Router/Framework phổ biến như Gin, Echo, Chi, hoặc thư viện chuẩn net/http.

4. Chi phí duy trì và yêu cầu bảo trì hệ thống như thế nào?

Do sử dụng hoàn toàn mã nguồn mở (Golang, MySQL, Nginx), hệ thống không tốn phí bản quyền định kỳ. Hoạt động bảo trì bao gồm: định kỳ cập nhật các bản vá bảo mật của hệ điều hành, cập nhật Go modules, và theo dõi dung lượng file log.

5. Tại sao đồ án lựa chọn Golang thay vì PHP hay Node.js?

Golang là ngôn ngữ lập trình biên dịch tĩnh, quản lý bộ nhớ an toàn (Type-safe & Memory-safe), có hiệu năng tương đương C/C++ nhưng cú pháp đơn giản. Golang xử lý đồng thời (Concurrency) vượt trội nhờ Goroutines, giúp hệ thống web đứng vững trước các đợt tải đột biến tốt hơn nhiều so với mô hình đơn luồng của Node.js hay mô hình đa tiến trình tiêu tốn RAM của PHP.


Kết luận

Đồ án tốt nghiệp "Các tấn công và giải pháp bảo mật web" của hai tác giả Trần Công Hậu và Võ Thế Vinh đã giải quyết trọn vẹn và chuẩn xác bài toán an toàn thông tin trên nền tảng web hiện đại. Bằng việc phân tích sâu sắc các vector tấn công nguy hiểm (SQL Injection, XSS, CSRF, DDoS, Session Hijacking, Brute-Force) và trực tiếp lập trình các module phòng thủ trên nền tảng Golang và Nginx, đồ án cung cấp một tài liệu kỹ thuật có giá trị thực tiễn cao cho cộng đồng học thuật lẫn doanh nghiệp.

Kết quả thực nghiệm đã khẳng định tính khả thi và hiệu năng vượt trội của mô hình phòng thủ đa tầng: ngăn chặn 100% các payload tấn công đã thử nghiệm trong khi vẫn đảm bảo độ trễ hệ thống ở mức cực thấp (< 3ms). Đây là minh chứng rõ nét cho việc lập trình an toàn ngay từ giai đoạn thiết kế (Security by Design) chính là chìa khóa xây dựng các ứng dụng web vững chắc trong thời đại số.