Top 10 lỗ hổng bảo mật web phổ biến – Phần 1

Top 10 lỗ hổng bảo mật web phổ biến - Phần 1

Với hầu hết các doanh nghiệp, việc thực hiện bảo mật website nên là vấn đề được ưu tiên hàng đầu – không cần đợi đến khi hậu quả xảy ra. Cách tiếp cận hiệu quả đối với các mối đe dọa về bảo mật web là chủ động và tự phòng ngừa. Bài viết này tập trung vào 10 lỗ hổng bảo mật web phổ biến và quan trọng cũng như đề xuất các cách để khắc phục chúng.

1. Injection flaws (Lỗi nhúng mã)

Lỗ hổng Injection là kết quả của sự thiếu sót trong việc lọc các đầu vào không đáng tin cậy. Nó có thể xảy ra khi bạn truyền các dữ liệu chưa được lọc tới Database (SQL injection), tới trình duyệt (XSS), tới máy chủ LDAP (LDAP Injection) hoặc tới bất cứ vị trí nào khác. Vấn đề ở đây là kẻ tấn công có thể chèn các đoạn mã độc dẫn đến lộ dữ liệu và chiếm quyền kiểm soát trình duyệt của khách hàng.

Mọi thông tin mà ứng dụng của bạn nhận được khi truy cập vào các nguồn không đáng tin cậy đều phải được lọc theo Whitelist, bởi nếu bạn sử dụng Blacklist việc lọc thông tin sẽ rất dễ bị bỏ qua. Tính năng Pattern matching sẽ không hoạt động nếu thiết lập Blacklist.

Cách ngăn chặn lỗ hổng:

Thật may mắn là để chống lại lỗ hổng này chỉ “đơn giản” là vấn đề bạn đã lọc đầu vào đúng cách chưa hay việc bạn cân nhắc  liệu một đầu vào có thể được tin cậy hay không. Về căn bản, tất cả các đầu vào đều cần được lọc trừ trường hợp đầu vào đó chắc chắn đáng tin cậy. (Tuy nhiên việc cẩn thận kiểm tra tất cả các đầu vào là luôn luôn cần thiết).

Ví dụ, trong một hệ thống với 1000 đầu vào, lọc thành công 999 đầu vào là không đủ vì điều này vẫn để lại một phần giống như “gót chân Asin”, có thể phá hoại hệ thống của bạn bất cứ lúc nào. Bạn có thể cho rằng đặt kết quả truy vấn SQL vào truy vấn khác là một ý tưởng hay vì cơ sở dữ liệu này là đáng tin cậy nhưng thật không may nếu không có hệ thống Perimeter network, đầu vào có thể gián tiếp đến từ những kẻ có ý đồ xấu. Đây được gọi là lỗi Second Order SQL Injection.

Việc lọc dữ liệu khá khó (giống như crypto) vì thế các bạn nên sử dụng các chức năng lọc trong framework của mình – các tính năng này đã được chứng minh sẽ thực hiện việc kiểm tra một cách kỹ lưỡng. Bạn nên cân nhắc sử dụng các framework vì đây là một trong các cách hiệu quả để bảo vệ máy chủ của bạn.

Xem thêm: 7 LOẠI HACKER BẠN CẦN BIẾT | SECURITYBOX

2. Broken Authentication

Đây là một nhóm các vấn đề có thể xảy ra trong quá trình xác thực nhưng chúng không cùng xuất phát từ một nguyên nhân gốc.

Có một lời khuyên đó là không nên tự phát triển các giải pháp mã hóa vì rất khó có thể làm được chính xác do có rất nhiều rủi ro có thể gặp phải như:

  • URL có thể chứa phiên ID và rò rỉ nó trong referer header của người khác.
  • Mật khẩu có thể không được mã hóa trong lưu trữ.
  • Có thể thực hiện các phiên cố định.
  • Session hijacking có thể xảy ra, thời gian chờ không được triển khai đúng hoặc sử dụng HTTP (không bảo mật SSL)…

Cách ngăn chặn lỗ hổng:

Cách đơn giản nhất để tránh lỗ hổng bảo mật web này là sử dụng một framework. Bạn cũng có thể tự thực hiện từ a-z nhưng thời gian gần đây việc này đã trở nên khó khăn hơn. Trong trường hợp bạn muốn tự tạo ra bộ mã của mình, hãy nghĩ đến những rủi ro mà bạn sẽ gặp phải và tự cân nhắc kĩ trước khi thực hiện.

3. Cross Site Scripting (XSS)

Đây là một lỗ hổng đầu vào khá phổ biến (hầu hết là trường hợp đặc biệt của lỗ hổng đầu tiên). Kẻ tấn công chèn các đoạn mã JavaScript vào đầu vào của ứng dụng web. Khi đầu vào này không được lọc, chúng sẽ được thực thi trên trình duyệt của người dùng. Có thể việc này tạo ra một liên kết và thuyết phục người dùng nhấp vào, hoặc có thể là thứ gì đó nguy hiểm hơn. Trên trang tải tập lệnh chạy, kẻ tấn công có thể lấy được cookie của bạn.

Top 10 lỗ hổng bảo mật web phổ biến - Phần 1 Top 10 lỗ hổng bảo mật web phổ biến – Phần 1
Top 10 lỗ hổng bảo mật web phổ biến mà các lập trình viên web nên biết

Cách ngăn chặn lỗ hổng:

Có một cách bảo mật web đơn giản đó là không trả lại thẻ HTML cho người dùng. Điều này còn giúp bảo vệ chống lại cả HTML Injection, một cuộc tấn công tương tự mà hacker tấn công vào nội dung HTML (chẳng hạn như hình ảnh hoặc splash player vô hình) – không gây ảnh hưởng nghiêm trọng nhưng khá rắc rối. Thông thường cách giải quyết đơn giản chỉ là chuyển đổi tất cả các thực thể HTML, do đó <script> được trả về dưới dạng &lt;script&gt.

Xem thêm: Các kiểu khai thác XSS – Phần 1: Reflected XSS

Còn tiếp >>>>>>>>>>>>>

Các từ khóa tìm kiếm:

  • Lổ hỏng website
  • Bảo mật website
  • Khai thác website
  • An toàn website

BÌNH LUẬN

Please enter your comment!
Please enter your name here