- vừa được xem lúc

Web Security chuyên sâu: XSS, CSRF, SSRF và cách phòng tránh

0 0 5

Người đăng: vDich Global

Theo Viblo Asia

Trong kỷ nguyên số, khi hầu hết các ứng dụng và dữ liệu đều hoạt động qua môi trường web, bảo mật không còn là phần “bổ sung”, mà trở thành một phần không thể thiếu trong quy trình phát triển phần mềm. Đặc biệt với lập trình viên web, việc hiểu và phòng tránh các lỗ hổng phổ biến như XSS, CSRF và SSRF là nền tảng để xây dựng các hệ thống bền vững, an toàn, và đáng tin cậy.

1. XSS – Cross-Site Scripting

XSS là gì? XSS (tấn công kịch bản chéo trang) xảy ra khi kẻ tấn công có thể chèn mã JavaScript độc hại vào trang web, và mã đó được thực thi bởi trình duyệt của người dùng khác. Điều này có thể dẫn đến đánh cắp cookie, giả mạo phiên đăng nhập hoặc chèn nội dung lừa đảo.

Ví dụ đơn giản: Nếu một trang hiển thị nội dung người dùng nhập vào mà không kiểm tra, như:

<p>Xin chào, {{name}}</p>

và nếu name là <script>alert("XSS")</script>, thì trình duyệt sẽ thực thi đoạn script trên.

Cách phòng tránh:

  • Escape đầu ra (Output Encoding): Mọi dữ liệu đầu vào từ người dùng khi hiển thị ra giao diện nên được encode phù hợp với ngữ cảnh HTML, JavaScript hoặc URL.
  • Sử dụng các framework hỗ trợ chống XSS, như React, Angular… vì mặc định chúng escape nội dung đầu ra.
  • CSP (Content Security Policy): Thiết lập CSP giúp hạn chế các nguồn script được phép thực thi.
  • Hạn chế innerHTML và eval(): Tránh sử dụng các hàm có khả năng chèn trực tiếp code vào DOM.

2. CSRF – Cross-Site Request Forgery

CSRF là gì? CSRF là kiểu tấn công đánh lừa người dùng đã đăng nhập thực hiện hành động không mong muốn trên một website mà họ đang xác thực. Kẻ tấn công gửi một request giả mạo tới website mục tiêu với phiên làm việc (session) của người dùng.

Ví dụ: người dùng đang đăng nhập tài khoản ngân hàng, và kẻ tấn công gửi yêu cầu chuyển tiền qua một ảnh hoặc iframe ẩn chứa trong trang độc hại. Nếu không có bảo vệ, server sẽ thực hiện vì nghĩ đó là lệnh thật.

Cách phòng tránh:

  • CSRF Token: Gắn mỗi request có tác động (POST, PUT, DELETE…) với một mã token duy nhất mà server xác minh.
  • SameSite Cookie: Đặt thuộc tính SameSite=Strict hoặc Lax cho cookie session giúp trình duyệt từ chối gửi cookie trong các request đến từ domain khác.
  • Kiểm tra Referer hoặc Origin: Server chỉ chấp nhận yêu cầu có nguồn rõ ràng, đến từ chính domain của mình.
  • Tách riêng quyền GET/POST: Không thực hiện các thay đổi quan trọng bằng phương thức GET.

3. SSRF – Server Side Request Forgery

SSRF là gì? SSRF cho phép kẻ tấn công thao túng server để gửi yêu cầu HTTP đến địa chỉ tùy ý (thường là dịch vụ nội bộ). SSRF thường xảy ra khi ứng dụng cho phép người dùng nhập URL để lấy nội dung từ web khác.

Ví dụ: Nếu server có chức năng "nhập URL để lấy hình ảnh", kẻ tấn công có thể gửi URL như http://127.0.0.1:8080/admin, buộc server truy cập tài nguyên nội bộ và trả về dữ liệu nhạy cảm.

Cách phòng tránh:

  • Giới hạn địa chỉ được phép gọi đến: Không cho phép gọi đến localhost, IP nội bộ (127.0.0.1, 169.254.x.x, v.v).
  • Xác minh whitelist: Chỉ cho phép request đến các domain đã định trước.
  • Chặn HTTP redirect đến địa chỉ nguy hiểm.
  • Sử dụng proxy để kiểm tra các request đến từ người dùng.
  • Không xử lý file trả về một cách tự động: Ví dụ không render HTML, không parse JSON từ URL chưa xác minh.

4. Tư duy bảo mật toàn diện: Không chỉ vá lỗi, mà phải ngăn từ gốc

Việc phòng tránh XSS, CSRF, SSRF không đơn thuần là “vá lỗi” – mà phải bắt đầu từ tư duy thiết kế hệ thống an toàn.

Các nguyên tắc bảo mật nên áp dụng:

  • Zero Trust: Không tin tưởng bất kỳ đầu vào nào từ phía người dùng.
  • Least Privilege: Mỗi thành phần, user hoặc chức năng chỉ nên có đúng quyền cần thiết, không hơn.
  • Defense in Depth: Áp dụng nhiều lớp bảo vệ – không dựa vào duy nhất một giải pháp.
  • Log và Alert: Ghi nhận các hành vi bất thường và cảnh báo tự động.

5. Công cụ hỗ trợ kiểm tra bảo mật

Không thể chỉ dựa vào cảm giác. Hãy sử dụng công cụ:

  • OWASP ZAP: Tìm lỗ hổng bảo mật tự động, dễ dùng.
  • Burp Suite: Công cụ chuyên sâu cho pentester kiểm tra ứng dụng web.
  • SonarQube, Snyk: Quét mã nguồn để phát hiện lỗ hổng code.
  • Google Lighthouse: Ngoài hiệu năng còn đánh giá bảo mật cơ bản.

6. Case study: Một sai lầm nhỏ, hậu quả lớn

Vào năm 2020, một hệ thống thanh toán trực tuyến tại châu Á bị khai thác XSS qua phần nhập mô tả đơn hàng – vốn không escape nội dung khi hiển thị lại. Hacker chèn JavaScript đánh cắp session cookie và thực hiện giao dịch giả mạo. Công ty thiệt hại hàng trăm triệu đồng chỉ vì một dòng code thiếu kiểm tra.

Điều này cho thấy: chỉ một lỗ hổng nhỏ, nếu xuất hiện đúng chỗ, có thể trở thành "cổng vào" cho những cuộc tấn công nghiêm trọng.

7. Kết luận: Lập trình an toàn không phải chỉ là kỹ thuật, mà là trách nhiệm

Trong thời đại mà dữ liệu trở thành tài sản quý giá, việc lập trình an toàn không chỉ là kỹ năng – mà là trách nhiệm đạo đức của lập trình viên. Mỗi dòng code bạn viết có thể là điểm yếu... hoặc là thành trì vững chắc bảo vệ hàng triệu thông tin người dùng.

Đừng đợi đến khi bị hack mới bắt đầu học bảo mật. Hãy hành động ngay từ hôm nay, từ những bước cơ bản nhất.


Biên tập bởi Tuyển dụng việc làm Quảng Ninh

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cùng học viết Bash Script cơ bản giúp chống tấn công DOS vào website

Mở đầu. "Là một System Admin thì chắc chắn phải biết viết Bash Script" đó là câu nói của anh trong team nói với mình khi mình đi thực tập, lúc đầu mình cũng nghe cho biết vậy thôi, tuy nhiên đến khi đ

0 0 54

- vừa được xem lúc

Laravel 8 - Sử dụng Authentication Json Web Token (JWT)

Chào các bạn, mình đã trở lại rồi đây. Ở bài viết lần trước, mình đã giới thiệu cho các bạn về Json Web Token và cách thức hoạt động của nó.

0 0 318

- vừa được xem lúc

Tìm hiểu về Cookies

Chào mọi người,. Trong bài này, chúng mình sẽ tìm hiểu về cookie HTTP và cách sử dụng JavaScript để quản lý cookie một cách hiệu quả.

0 0 47

- vừa được xem lúc

Bạn "hack" được website, tôi cũng có thể !!!

I. TỔNG QUAN.

0 0 77

- vừa được xem lúc

Sherlock Mon và vụ án 25 website wordpress bị hack

Trích từ cuốn hồi ký của bác sĩ Watmen, người bạn vào sinh ra tử cùng thám tử Sherlock Mon về vụ án 25 trang Wordpress bị hack và cuộc phiêu lưu đi tìm kẻ thủ ác của cặp đôi này. Một chiều mùa đông tr

0 0 42

- vừa được xem lúc

CSRF Attack: How to Protect Your Web Applications

Cross-Site Request Forgery (CSRF) is a type of web application vulnerability that allows an attacker to execute actions on behalf of a victim user without their knowledge or consent. This type of atta

0 0 29