Các lỗ hổng bảo mật website theo OWASP và cách phòng tránh

Bạn có biết rằng theo OWASP (Open Web Application Security Project) - một tổ chức quốc tế chuyên về bảo mật ứng dụng web và dịch vụ web, có đến hơn 80% cuộc tấn công mạng nguyên nhân từ các lỗi bảo mật phổ biến trên website? Chính vì vậy, việc nhận diện và phòng tránh các lỗ hổng bảo mật của website là vô cùng quan trọng bởi vì nó không chỉ bảo vệ dữ liệu của bạn mà còn duy trì uy tín cho doanh nghiệp. 
 

Các lỗ hổng bảo mật website theo OWASP và cách phòng tránh
 

Lỗ hổng bảo mật là gì?

Lỗ hổng bảo mật là những điểm yếu hoặc khiếm khuyết trong hệ thống thông tin, phần mềm, phần cứng hoặc quy trình bảo mật. Đây là nơi có thể bị kẻ tấn công lợi dụng để xâm nhập, gây hại hoặc chiếm quyền kiểm soát hệ thống. Ngoài ra, theo Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST), lỗ hổng bảo mật được định nghĩa là "sự yếu kém trong hệ thống thông tin, quy trình bảo mật hệ thống, kiểm soát nội bộ hoặc triển khai có thể bị khai thác bởi nguồn đe dọa".

Lỗ hổng bảo mật thường được chia thành ba cấp độ chính theo mức độ nghiêm trọng để các tổ chức ưu tiên khắc phục và triển khai biện pháp phòng ngừa hiệu quả. Ba cấp độ lần lượt như sau: 

- Mức độ thấp (Loại C): Những lỗ hổng này thường ảnh hưởng đến chất lượng dịch vụ, có thể gây gián đoạn hoặc ngưng trệ hệ thống tạm thời nhưng không dẫn đến mất mát dữ liệu hay cho phép truy cập trái phép. Ví dụ, tấn công từ chối dịch vụ (DoS) có thể làm gián đoạn dịch vụ nhưng không gây hại lâu dài cho hệ thống.

- Mức độ trung bình (Loại B): Các lỗ hổng này cho phép người dùng nội bộ hoặc kẻ tấn công có thể nâng cao quyền truy cập hoặc truy cập trái phép vào thông tin nhạy cảm, dẫn đến rò rỉ dữ liệu hoặc thay đổi thông tin quan trọng.

- Mức độ cao (Loại A): Đây là những lỗ hổng nghiêm trọng nhất, cho phép kẻ tấn công từ bên ngoài có thể truy cập trái phép vào hệ thống, chiếm quyền kiểm soát hoàn toàn và gây ra thiệt hại lớn như phá hủy dữ liệu, đánh cắp thông tin quan trọng hoặc ngưng trệ toàn bộ hệ thống.
 

Lỗ hổng bảo mật website
 

Những con số đáng báo động về các vụ tấn công website trên toàn cầu

Các cuộc tấn công mạng đang bùng nổ với tốc độ chóng mặt gây ra những hậu quả nghiêm trọng cho các tổ chức và cá nhân trên toàn thế giới. Dưới đây là những thống kê nổi bật:

- Thiệt hại toàn cầu lên đến 9.500 tỷ USD trong năm 2024: Theo Cybersecurity Ventures, các vụ tấn công mạng đã gây thiệt hại lên tới khoảng 9.500 tỷ USD trên toàn thế giới trong năm 2024, tăng đáng kể so với con số 8.000 tỷ USD vào năm 2023.

- Việt Nam ghi nhận 12.650 cuộc tấn công mạng trong năm 2024: Báo cáo của Cục An toàn thông tin cho thấy, trong năm 2024, Việt Nam đã ghi nhận 12.650 cuộc tấn công mạng gây ra sự cố vào các hệ thống thông tin. 

- Sự gia tăng của các cuộc tấn công sử dụng trí tuệ nhân tạo (AI) trong năm 2024: Năm 2024 đã chứng kiến sự gia tăng kỷ lục của các cuộc tấn công mạng với sự trợ giúp của trí tuệ nhân tạo, các cuộc tấn công trở nên chính xác và tinh vi hơn, gây thiệt hại toàn cầu ước tính lên đến 10.000 triệu euro, gấp đôi so với năm trước. 

Những con số trên cho thấy mức độ nguy hiểm và phổ biến của các cuộc tấn công mạng trong kỷ nguyên 4.0 hiện nay, đòi hỏi các tổ chức và cá nhân phải nâng cao cảnh giác và triển khai các biện pháp bảo mật hiệu quả để bảo vệ thông tin và tài sản số của mình.
 

Các lỗ hổng bảo mật
 

Hậu quả khi website bị khai thác lỗ hổng bảo mật

Khi một trang web bị khai thác lỗ hổng bảo mật, hậu quả có thể rất nghiêm trọng, ảnh hưởng đến cả doanh nghiệp và người dùng.

- Rò rỉ dữ liệu nhạy cảm: Tin tặc có thể đánh cắp thông tin cá nhân và các khoản tài chính của khách hàng. Chẳng hạn, vụ tấn công vào Equifax năm 2017 đã làm lộ thông tin của 147 triệu người dùng, gây thiệt hại đáng kể về uy tín và tài chính cho công ty.

- Ngừng hoạt động kinh doanh: Các cuộc tấn công từ chối dịch vụ (DDoS) có thể làm sập trang web, gây gián đoạn hoạt động kinh doanh và mất doanh thu. Ví dụ vào tháng 10/2016, một cuộc tấn công DDoS lớn đã làm gián đoạn nhiều dịch vụ trực tuyến như Twitter, Netflix và Reddit.

- Chiếm quyền kiểm soát trang web: Kẻ tấn công có thể kiểm soát hoàn toàn trang web, thay đổi nội dung hoặc sử dụng nó cho mục đích xấu từ phá hủy lỗ hổng bảo mật website. Việc này có thể giảm uy tín và sự tin tưởng của khách hàng đối với doanh nghiệp.

- Thiệt hại tài chính: Chi phí để khắc phục hậu quả của các cuộc tấn công mạng có thể rất lớn. Theo thống kê, các lỗ hổng bảo mật là nguyên nhân hàng đầu gây ra các cuộc tấn công mạng, dẫn đến thiệt hại lên tới hàng ngàn tỷ USD trên toàn cầu. 
 

Lỗ hổng bảo mật của website
 

Điểm mặt các lỗ hổng bảo mật website phổ biến hiện nay theo OWASP

Trong bối cảnh an ninh mạng ngày càng phức tạp, việc nhận diện và phòng tránh các lỗ hổng bảo mật trên website là vô cùng quan trọng. Dưới đây là một số lỗ hổng phổ biến theo tiêu chuẩn OWASP. 

1. Broken Access Control (Lỗi kiểm soát truy cập)

Broken Access Control là một lỗ hổng bảo mật website xảy ra khi hệ thống không thực thi đúng các chính sách kiểm soát truy cập, người dùng có thể truy cập trái phép vào các tài nguyên hoặc chức năng mà họ không được phép. Hành vi này có thể dẫn đến việc tiết lộ thông tin nhạy cảm, thay đổi dữ liệu hoặc thực hiện các hành động ngoài phạm vi quyền hạn của người dùng.

Lỗ hổng này thường xuất hiện do:

- Thiếu kiểm tra quyền truy cập: Hệ thống không xác minh quyền hạn của người dùng trước khi cho phép truy cập vào các chức năng hoặc dữ liệu nhạy cảm. Ví dụ trong một hệ thống quản lý, nếu chức năng thay đổi vai trò người dùng không được bảo vệ đúng cách, người dùng bình thường có thể tự nâng cấp quyền hạn của mình lên quản trị viên. 

- Kiểm soát truy cập không nhất quán: Các chính sách kiểm soát truy cập được triển khai không đồng nhất trên toàn bộ ứng dụng, dẫn đến việc một số phần của hệ thống không được bảo vệ đúng cách.

Để phòng tránh lỗi kiểm soát truy cập và nâng cao bảo mật website, bạn có thể thực hiện một số giải pháp như sau: 

- Thực thi kiểm soát truy cập nghiêm ngặt: Trước khi cho phép thực hiện bất kỳ yêu cầu nào, hệ thống cần xác minh quyền hạn của người dùng. Điều này đảm bảo rằng chỉ những người dùng có quyền mới có thể truy cập vào các chức năng hoặc dữ liệu nhạy cảm.

- Sử dụng kiểm soát truy cập dựa trên vai trò (RBAC): Hệ thống nên phân quyền rõ ràng cho từng vai trò, đảm bảo người dùng chỉ truy cập vào các chức năng và dữ liệu phù hợp với vai trò của họ. Ví dụ, nhân viên bán hàng chỉ nên truy cập vào các chức năng liên quan đến bán hàng, trong khi quản trị viên có quyền truy cập rộng hơn.

- Thực hiện bảo mật định kỳ: Bạn cần thường xuyên tiến hành các cuộc kiểm tra bảo mật để phát hiện và khắc phục kịp thời các lỗi hổng bảo mật liên quan đến kiểm soát truy cập. Điều này giúp duy trì an toàn cho hệ thống và bảo vệ dữ liệu khỏi các mối đe dọa tiềm ẩn.

2. Cryptographic Failures (Lỗi mật mã)

Lỗi mật mã xảy ra khi các biện pháp mã hóa được triển khai không đúng cách hoặc bị bỏ qua, dẫn đến việc bảo vệ dữ liệu nhạy cảm không hiệu quả. Các thông tin quan trọng như mật khẩu, số thẻ tín dụng hoặc thông tin cá nhân của người dùng có thể bị lộ khi mắc phải lỗi bảo mật này. Trước đây, vấn đề này được gọi là "Sensitive Data Exposure" (Phơi bày dữ liệu nhạy cảm) nhưng hiện tại OWASP đã tập trung vào nguyên nhân gốc rễ liên quan đến các thất bại trong việc sử dụng mật mã. 

Một ví dụ cụ thể về lỗi mật mã là sử dụng thuật toán băm MD5 để lưu trữ mật khẩu người dùng. MD5 từng được coi là an toàn nhưng hiện nay đã được chứng minh là dễ bị tấn công thông qua các phương pháp như tấn công va chạm (collision attack) và bảng tra cứu cầu vồng (rainbow table). Kẻ tấn công tìm hai đầu vào khác nhau nhưng cho ra cùng một giá trị băm MD5, từ đó có thể giả mạo dữ liệu và truy cập trái phép.

Để bảo vệ mật khẩu người dùng an toàn hơn, bạn có thể sử dụng các thuật toán băm mạnh hơn như bcrypt, scrypt hoặc áp dụng kỹ thuật salting, tức là thêm một chuỗi ngẫu nhiên vào mật khẩu trước khi băm để tăng độ phức tạp và giảm nguy cơ bị tấn công bằng bảng tra cứu. 
 

Các lỗ hổng bảo mật website

 

3. Injection (Lỗi chèn mã độc)

Lỗ hổng Injection xảy ra khi ứng dụng hoặc trang web không kiểm tra và làm sạch dữ liệu đầu vào từ người dùng một cách cẩn thận. Điều này cho phép kẻ tấn công chèn các đoạn mã độc vào hệ thống, dẫn đến việc truy cập trái phép, đánh cắp thông tin hoặc kiểm soát toàn bộ ứng dụng. Các dạng phổ biến của lỗ hổng này bao gồm SQL Injection, Cross-Site Scripting (XSS) và LDAP Injection.

Lỗi chèn mã độc này xảy ra khi ứng dụng nhận dữ liệu từ người dùng mà không thực hiện kiểm tra hoặc lọc bỏ các ký tự nguy hiểm, kẻ tấn công có thể chèn mã độc vào các đầu vào (input) này. Ví dụ, trong trường hợp SQL Injection, kẻ tấn công có thể thêm các lệnh SQL độc hại vào trường nhập liệu, khiến cơ sở dữ liệu thực thi các lệnh không mong muốn. Tương tự với XSS, kẻ tấn công có thể chèn mã JavaScript độc hại vào trang web, gây hại cho người dùng khác khi họ truy cập trang.

Để phòng tránh lỗi chèn mã độc, bạn nên:

- Lọc và xác thực dữ liệu đầu vào: Mọi dữ liệu nhập từ người dùng phải được kiểm tra và làm sạch kỹ lưỡng. Sử dụng danh sách trắng (whitelist) chỉ cho phép các ký tự và định dạng hợp lệ, đồng thời loại bỏ các ký tự đặc biệt có thể gây hại. Việc này ngăn chặn kẻ tấn công chèn mã độc vào hệ thống thông qua các đầu vào không an toàn.

- Sử dụng truy vấn tham số hóa: Khi tương tác với cơ sở dữ liệu, bạn nên sử dụng các truy vấn tham số hóa thay vì nối chuỗi trực tiếp. Điều này giúp tách biệt mã lệnh và dữ liệu, từ đó ngăn chặn việc chèn mã độc vào các câu lệnh SQL. Các framework hiện đại thường cung cấp sẵn các công cụ hỗ trợ truy vấn tham số hóa, giảm thiểu nguy cơ bị tấn công SQL Injection.

- Sử dụng các API an toàn: Khi phát triển ứng dụng, các lập trình viên nên sử dụng các API hoặc thư viện đã được kiểm tra và chứng nhận an toàn. Các API này thường có các biện pháp bảo vệ tích hợp giảm thiểu nguy cơ bị tấn công thông qua lỗ hổng Injection.

4. Insecure Design (Thiết kế không an toàn)

Insecure Design đề cập đến các lỗi bảo mật phổ biến xuất phát từ quyết định thiết kế ban đầu trong kiến trúc hoặc logic của hệ thống website, phần mềm, tạo điều kiện cho các tác nhân độc hại khai thác. Một số dấu hiệu thường thấy ở lỗi này như sau:

- Chưa cập nhật phiên bản mới: Hệ thống chưa vá các lỗ hổng cũ dù đã có các bản cập nhật mới dễ dàng dẫn đến việc rò rỉ dữ liệu.

- Không giới hạn đăng nhập: Nhiều CMS như WordPress cho phép vô hạn lần thử mật khẩu quản trị, tạo điều kiện cho các cuộc tấn công brute-force.

- Hệ thống xác thực yếu: Thiết kế hệ thống website, ứng dụng cho phép người dùng đặt mật khẩu đơn giản như "123456" mà không yêu cầu xác minh 2 bước. 

Cách khắc phục đơn giản nhất cho thiết kế không an toàn là ưu tiên các biện pháp phòng ngừa cơ bản từ giai đoạn thiết kế ban đầu. 

- Áp dụng nguyên tắc đặc quyền tối thiểu: Giới hạn quyền truy cập của mọi thành phần hệ thống chỉ ở mức cần thiết tối thiểu. Ví dụ, tài khoản khách chỉ được xem thông tin không thể chỉnh sửa cơ sở dữ liệu. 

- Cập nhật định kỳ: Thiết lập tự động hóa việc vá lỗi bảo mật và nâng cấp phiên bản phần mềm. Hệ thống CMS như WordPress có tính năng auto-update cho plugin/nền tảng. 
 

Các lỗ hổng bảo mật của website
 

5. Security Misconfiguration (Lỗi cấu hình bảo mật)

Lỗi cấu hình bảo mật sai là nguyên nhân phổ biến dẫn đến các lỗi hổng bảo mật trên website và hệ thống doanh nghiệp. Lỗi xảy ra khi các thành phần của hệ thống bảo mật bị khai thác do cấu hình sai. 

Một ví dụ phổ biến và dễ hiểu về lỗi bảo mật này là việc sử dụng mật khẩu mặc định cho các tài khoản quản trị. Nhiều thiết bị mạng như bộ định tuyến (router) hoặc hệ thống quản lý nội dung (CMS) đi kèm với tài khoản quản trị có tên người dùng và mật khẩu mặc định, chẳng hạn như "admin/admin" hoặc "admin/password". Nếu người dùng không thay đổi các thông tin đăng nhập này sau khi cài đặt, kẻ tấn công có thể dễ dàng truy cập vào hệ thống bằng cách sử dụng các thông tin mặc định này.

Cách khắc phục lỗi này đơn giản như sau, ngay sau khi cài đặt thiết bị hoặc ứng dụng, bạn hãy đăng nhập vào tài khoản quản trị và thay đổi mật khẩu mặc định thành một mật khẩu mạnh bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt. Vô hiệu hóa hoặc xóa các tài khoản không cần thiết cũng là bước quan trọng để giảm thiểu nguy cơ bị tấn công.

6. Vulnerable and Outdated Components (Các thành phần lỗi thời và có lỗ hổng)

Vulnerable and Outdated Components (Các thành phần lỗi thời và có lỗ hổng) đề cập đến việc hệ thống sử dụng các phần mềm, thư viện hoặc mô-đun đã cũ, không còn được hỗ trợ hoặc chứa lỗ hổng bảo mật mà hacker đã biết. Chẳng hạn như trang web sử dụng phiên bản cũ của hệ quản trị nội dung (CMS) như WordPress, phiên bản này có lỗ bảo mật cho phép kẻ tấn công từ xa.

Nếu không cập nhật phiên bản mới nhất, kẻ tấn công có thể lợi dụng lỗ hổng này để chiếm quyền kiểm soát trang web, đánh cắp dữ liệu hoặc chèn mã độc. Vì vậy, cách khắc phục hữu hiệu nhất chính là thường xuyên cập nhật phần mềm, cập nhật định kỳ các phiên bản mới nhất để vá các lỗi hổng bảo mật giảm thiểu nguy cơ tấn công. 

7. Identification and Authentication Failures (Lỗi xác thực và nhận dạng)

Identification and Authentication Failures (Lỗi xác thực và nhận dạng) xảy ra khi hệ thống không thể xác minh danh tính người dùng một cách chính xác hoặc không quản lý phiên làm việc (session) một cách an toàn. Điều này có thể dẫn đến việc kẻ tấn công truy cập trái phép vào hệ thống, đánh cắp thông tin nhạy cảm hoặc thực hiện các hành vi gian lận.

Ví dụ: Một trang web cho phép người dùng đặt lại mật khẩu thông qua việc trả lời các câu hỏi bảo mật như "Tên thú cưng đầu tiên của bạn là gì?" hoặc "Trường tiểu học bạn học tên gì?". Nếu kẻ tấn công biết hoặc dễ dàng tìm ra câu trả lời cho những câu hỏi này, họ có thể đặt lại mật khẩu của người dùng và truy cập vào tài khoản của họ.

Dưới đây là một số biện pháp đơn giản mà bạn có thể áp dụng để khắc phục lỗi:

- Sử dụng xác thực đa yếu tố (MFA): Bên cạnh mật khẩu, yêu cầu người dùng cung cấp thêm một yếu tố xác thực khách để tăng cường bảo mật, chẳng hạn như mã xác nhận gửi qua SMS hoặc email,....

- Bảo vệ quy trình đặt lại mật khẩu: Thay vì sử dụng các câu hỏi bảo mật dễ đoán, bạn có thể gửi liên kết đặt lại mật khẩu đến địa chỉ email đã đăng ký của người dùng. Quy trình này đảm bảo rằng chỉ người dùng hợp pháp mới có thể đặt lại mật khẩu.
 

Các lỗ hổng bảo mật phổ biến
 

8. Software and Data Integrity Failures (Lỗi toàn vẹn dữ liệu và phần mềm)

Software and Data Integrity Failures (Lỗi toàn vẹn dữ liệu và phần mềm) xảy ra khi hệ thống không đảm bảo được tính chính xác, đầy đủ và nhất quán của dữ liệu và phần mềm trong suốt vòng đời của chúng. Điều này có thể dẫn đến việc dữ liệu bị thay đổi trái phép, mất mát hoặc phần mềm hoạt động không đúng như mong đợi.

Bạn có thể hình dung dễ dàng lỗi này qua ví dụ sau: 1 trang web cho phép người dùng tải lên và chia sẻ tệp tin nhưng lại không kiểm tra tính toàn vẹn của các tệp tin, hackers có thể thay thế tệp tin gốc bằng một tệp tin độc hại dẫn đến việc người dùng khác tải xuống và chạy mã độc. Cách đơn giản để kiểm tra tính toàn vẹn của các tệp chính là sử dụng các thuật toán băm để tạo mã băm cho tệp tin sau khi tải lên và so sánh với mã băm gốc. Nếu mã băm không khớp, tệp tin đã bị thay đổi và cần được xử lý. 

9. Security Logging and Monitoring Failures (Lỗi ghi nhật ký và giám sát bảo mật)

Security Logging and Monitoring Failures xảy ra khi hệ thống không ghi lại hoặc không theo dõi các sự kiện bảo mật quan trọng một cách hiệu quả. Điều này dẫn đến việc các cuộc tấn công hoặc hoạt động đáng ngờ không được phát hiện kịp thời, gây khó khăn trong việc ứng phó và giảm thiểu thiệt hại. 

Dưới đây là một số biện pháp khắc phục lỗi ghi nhật ký và giám sát bảo mật bạn có thể tham khảo:

- Thiết lập ghi nhật ký cho các sự kiện quan trọng: Quản trị viên cần đảm bảo rằng hệ thống ghi lại các sự kiện như đăng nhập thành công và thất bại, thay đổi quyền truy cập và các hoạt động quan trọng khác.

- Triển khai hệ thống giám sát và cảnh báo: Các tổ chức nên sử dụng các công cụ giám sát để theo dõi nhật ký và thiết lập cảnh báo khi phát hiện hoạt động đáng ngờ hoặc bất thường.

- Bảo vệ và lưu trữ nhật ký an toàn: Quản trị viên phải đảm bảo rằng các tệp nhật ký được lưu trữ ở vị trí an toàn, có cơ chế bảo vệ chống truy cập trái phép và không bị chỉnh sửa. 

10. Server-Side Request Forgery - SSRF (Giả mạo yêu cầu phía máy chủ)

Server-Side Request Forgery (SSRF) (Giả mạo yêu cầu phía máy chủ) là một lỗ hổng bảo mật web xảy ra khi ứng dụng web cho phép kẻ tấn công gửi các yêu cầu từ máy chủ (server) đến các tài nguyên không mong muốn bao gồm cả các dịch vụ nội bộ hoặc bên thứ ba. Kẻ tấn công có thể lợi dụng SSRF để quét các dịch vụ trong mạng nội bộ, tìm kiếm các lỗ hổng khác để tấn công sâu hơn vào hệ thống.

Chính vì vậy, bạn nên hạn chế quyền truy cập mạng của máy chủ bằng cấu hình tường lửa hoặc các quy tắc kiểm soát truy cập mạng để ngăn chặn máy chủ truy cập vào dịch vụ nội bộ không cần thiết hoặc các địa chỉ IP không tin cậy. 

 

Lỗi hổng bảo mật
 

11. Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) là một lỗ hổng bảo mật phổ biến trong các ứng dụng web, xảy ra khi kẻ tấn công chèn mã độc hại vào trang web khiến mã độc đó được thực thi trong trình duyệt của người dùng khác. Tức là, khi một người dùng truy cập trang web đã bị chèn mã độc, trình duyệt của họ sẽ chạy đoạn mã đó xem như nó là một phần hợp pháp của trang, từ đó kẻ tấn công có thể đánh cắp thông tin nhạy cảm (như cookie, token phiên, thông tin đăng nhập) hoặc thậm chí thao tác với dữ liệu của người dùng nhằm thực hiện các hành vi gian lận.

Để phòng tránh lỗ hổng XSS, bạn cần luôn kiểm tra và mã hóa tất cả dữ liệu đầu vào từ người dùng trước khi hiển thị trên trang web nhằm ngăn chặn việc kẻ tấn công chèn mã độc vào nội dung. Bên cạnh đó, bạn nên sử dụng các hàm mã hóa đặc biệt cho các ngữ cảnh khác nhau như HTML, JavaScript hoặc URL để đảm bảo rằng dữ liệu đầu vào không bị hiểu nhầm là mã lệnh, từ đó giảm thiểu nguy cơ bị tấn công XSS. 

12. Insecure Direct Object References (Lỗi tham chiếu đối tượng trực tiếp không an toàn)

Lỗi tham chiếu đối tượng trực tiếp không an toàn, xảy ra khi ứng dụng cho phép người dùng truy cập trực tiếp vào các đối tượng (như tệp tin, cơ sở dữ liệu hay tài nguyên hệ thống) thông qua các tham số đầu vào mà không thực hiện kiểm tra phân quyền đầy đủ. 

Ví dụ, nếu URL của trang thông tin cá nhân là https://example.com/profile?userId=123 và hệ thống không kiểm tra quyền sở hữu, một kẻ tấn công đăng nhập với tài khoản của mình có thể thay đổi user Id=123 thành user Id=124 để truy cập thông tin của người dùng khác. Lỗi này có thể gây hậu quả nghiêm trọng cho cả người dùng lẫn doanh nghiệp. Để khắc phục lỗ hổng này, các lập trình viên cần thực hiện các biện pháp sau:

- Kiểm tra phân quyền đối với từng yêu cầu: Trước khi cho phép truy cập vào bất kỳ đối tượng nào, hệ thống phải kiểm tra xem người dùng hiện tại có quyền truy cập đối với đối tượng đó hay không.

- Sử dụng tham chiếu gián tiếp: Thay vì để lộ các khóa hoặc ID trực tiếp, hệ thống có thể sử dụng các token ngẫu nhiên, mã hóa hoặc các chỉ số không liên kết trực tiếp với dữ liệu thực để làm tham chiếu tới các đối tượng.

13. Sensitive Data Exposure (Rò rỉ dữ liệu nhạy cảm)

Sensitive Data Exposure (Rò rỉ dữ liệu nhạy cảm) xảy ra khi các ứng dụng không bảo vệ đúng cách các thông tin quan trọng như dữ liệu cá nhân, thông tin tài chính, mật khẩu hoặc các loại dữ liệu bảo mật khác. Khi dữ liệu nhạy cảm được lưu trữ hoặc truyền tải mà không có biện pháp mã hóa thích hợp, kẻ tấn công có thể dễ dàng truy cập và lợi dụng thông tin này cho các mục đích gian lận hoặc tội phạm mạng. 

Một ví dụ thường thấy với lỗ hổng bảo mật này là ứng dụng web lưu trữ thông tin khách hàng như số thẻ tín dụng hoặc địa chỉ email dưới dạng văn bản thuần (plaintext) mà không sử dụng các thuật toán mã hóa mạnh. Nếu một kẻ tấn công vào được cơ sở dữ liệu, họ có thể trực tiếp đọc được thông tin này và sử dụng thực hiện các hành vi gian lận tài chính hoặc đánh cắp danh tính.

Để bảo vệ dữ liệu nhạy cảm, các lập trình viên cần mã hóa thông tin khi lưu trữ (data at rest) cũng như khi truyền tải (data in transit). Điều này bao gồm việc sử dụng các giao thức bảo mật như TLS/SSL để bảo vệ dữ liệu trong quá trình truyền tải và áp dụng các thuật toán mã hóa mạnh như AES cho dữ liệu lưu trữ. Ngoài ra, việc quản lý khóa mã hóa chặt chẽ và không lưu trữ thông tin nhạy cảm ở nơi dễ bị truy cập cũng là những biện pháp quan trọng để giảm thiểu rủi ro.
 

Lỗi bảo mật
 

14. Cross-Site Request Forgery - CSRF (Giả mạo yêu cầu liên trang)

Cross-Site Request Forgery (CSRF) là một trong các lỗ hổng bảo mật của website rất phổ biến, kẻ tấn công lừa người dùng đã đăng nhập vào một trang web tin cậy gửi đi các yêu cầu không mong muốn. Khi người dùng duy trì phiên đăng nhập, trình duyệt của họ tự động gửi thông tin xác thực cùng với mỗi yêu cầu. Nếu kẻ tấn công lợi dụng điều này, họ có thể khiến trình duyệt thực hiện các hành động trái phép như thay đổi thông tin cá nhân, chuyển tiền hoặc thực hiện các giao dịch khác mà người dùng không hề hay biết.

Sử dụng token chống CSRF để xác minh yêu cầu đó xuất phát từ các nguồn hợp lệ và kiểm tra các header như Referer/Origin xác nhận các yêu cầu nhạy cảm được gửi từ các domain đáng tin cậy là những cách hiệu quả để phòng tránh CSRF.

15. Unrestricted File Upload (Lỗ hổng tải tệp độc hại)

Unrestricted File Upload (Lỗ hổng tải tệp độc hại) là lỗi hổng bảo mật xảy ra khi ứng dụng cho phép người dùng tải lên các tệp mà không kiểm soát hoặc hạn chế đúng cách về loại, kích thước, định dạng hay nội dung của tệp đó. Ví dụ, kẻ tấn công có thể tải lên một tệp chứa mã PHP độc hại vào thư mục được phép tải lên và sau đó truy cập vào tệp đó để thực thi mã trên máy chủ.

Cách phòng tránh: 

- Kiểm tra định dạng và nội dung của tệp: Hệ thống cần thực hiện kiểm tra định dạng và nội dung của các tệp được tải lên bằng cách xác thực MIME type, định dạng file và nội dung thực tế thay vì chỉ dựa vào phần mở rộng của tên file.

- Giới hạn quyền truy cập tới thư mục tải lên: Quản trị viên phải cấu hình máy chủ sao cho các thư mục chứa tệp tải lên chỉ cho phép thao tác đọc và ghi dữ liệu mà không cho phép thực thi mã.
 

Lỗi bảo mật phổ biến
 

Bài viết của Phương Nam Vina đã tổng hợp và liệt kê các lỗ hổng bảo mật của website phổ biến nhất theo tiêu chuẩn OWASP từ các lỗi phổ biến như Injection, Broken Access Control, XSS, SSRF cho đến các vấn đề phức tạp hơn như IDOR hay Sensitive Data Exposure. Qua đó, có thể thấy rằng mỗi lỗ hổng đều có khả năng gây ra những hậu quả nghiêm trọng như đánh cắp thông tin nhạy cảm hay chiếm đoạt quyền kiểm soát hệ thống. Chính vì vậy, nhận thức đầy đủ và áp dụng các thực tiễn bảo mật tốt nhất chính là chìa khóa để bảo vệ website và duy trì sự tin cậy của người dùng trong môi trường số ngày nay.

Tham khảo thêm:

icon thiết kế website Authentication là gì? Các loại authentication phổ biến

icon thiết kế website Tấn công Brute Force là gì? Cách đối phó với Brute Force Attack

icon thiết kế website Sập web là gì? Nguyên nhân và cách khắc phục trang web bị sập

Bài viết mới nhất

Tên miền đuôi .net là gì? Khám phá ý nghĩa tên miền .net

Tên miền đuôi .net là gì? Khám phá ý nghĩa tên miền .net

Trải qua hàng thập kỷ, tên miền đuôi .net không những giữ vững vị thế của mình mà còn mở rộng phạm vi ứng dụng, trở thành một lựa chọn đa năng.

Thiết kế website ASP.NET chuyên nghiệp, hiệu suất cao

Thiết kế website ASP.NET chuyên nghiệp, hiệu suất cao

Thiết kế website ASP.NET là một trong những giải pháp mạnh mẽ hàng đầu giúp bạn tạo ra các trang web bảo mật cao, tốc độ nhanh và dễ dàng mở rộng.

Web 4.0 là gì? Giải mã web 4.0 định hình tương lai Internet

Web 4.0 là gì? Giải mã web 4.0 định hình tương lai Internet

Với tiềm năng vô hạn, Web 4.0 hứa hẹn sẽ kiến tạo nên một tương lai thông minh, kết nối, tiện nghi và cá nhân hóa sâu sắc cho trải nghiệm người dùng.

Tuyển tập 15 website đẹp nhất thế giới và phân tích chuyên sâu

Tuyển tập 15 website đẹp nhất thế giới và phân tích chuyên sâu

Khám phá tuyển tập website đẹp nhất thế giới cùng phân tích chuyên sâu về giao diện, trải nghiệm người dùng và các yếu tố thiết kế độc đáo.

 

Cấu trúc website là gì? Cách xây dựng cấu trúc website tối ưu

Cấu trúc website là gì? Cách xây dựng cấu trúc website tối ưu

Khi cấu trúc được xây dựng một cách hợp lý, website sẽ trở nên dễ điều hướng, thân thiện với công cụ tìm kiếm và có khả năng mở rộng trong tương lai.

 
WebXR là gì? Giải mã bản chất và tiềm năng vô hạn của WebXR

WebXR là gì? Giải mã bản chất và tiềm năng vô hạn của WebXR

WebXR API là bước đột phá trong lĩnh vực thực tế ảo (VR) và thực tế tăng cường (AR) mở ra cánh cửa cho những trải nghiệm kỹ thuật số sống động. 

 
zalo