Thứ Hai, 13 tháng 9, 2021

SQL Injection là gì? 3 cách phòng chống SQL Injection hiệu quả nhất

SQL Injection được biết đến như một cách tấn công kho dữ liệu SQL vô cùng nguy hiểm. Những hậu quả nó để lại là vô cùng to lớn. Trong thời gian gần đây, rất nhiều công ty và doanh nghiệp phải chịu những tổn thất đáng kể bởi SQL Injection. Để ngăn chặn được lỗ hổng này, trước tiên bạn phải nắm rõ SQL Injection là gì cũng như các đặc điểm tấn công của nó. Hãy cùng Teky tham khảo ngay trong bài viết sau đây.

SQL Injection là gì?

Lỗi SQL Injection là một dạng tấn công thông qua những lỗ hổng trong bảo mật dữ liệu của một hệ thống. Bằng cách chèn các đoạn mã vào trong entry field, hacker sẽ tiến hành xâm nhập ứng dụng chứa dữ liệu của toàn bộ hệ thống. Các lệnh SQL độc hại ở đây có thể là đề xuất kết nối từ cơ sở dữ liệu cho hacker hoặc cấp phép truy cập cho những đối tượng không được phép.

Lỗi SQL Injection là gì?

Lỗi SQL Injection là gì?

SQL Injection thường xuất hiện nhiều nhất trong những trang web. Tuy nhiên, nó cũng có khả năng tấn công bất kỳ cơ sở dữ liệu SQL nào. Những vector SQL độc hại hoạt động cho phép hacker gây ra những thiệt hại to lớn như: giả mạo danh tính, xáo trộn và đánh cắp dữ liệu, thay đổi số dư, phá hủy hệ thống hoặc thậm chí là trở thành admin và ăn cắp một server cơ sở dữ liệu.

Cách thức tấn công của SQL Injection là gì?

Để tìm hiểu về SQL Injection là gì kỹ hơn, ta sẽ cùng đến với phần phân loại các tấn công SQL Injection.

In-band SQLi

Đây là phương thức tấn công SQL phổ biến nhất hiện nay. Điểm nổi bật nhất của In-band SQLi là kẻ xấu sẽ sử dụng cùng một kênh để tiến hành tấn công và thu thập dữ liệu đánh cắp được. In-band SQLi hiện có 2 biến thể thông dụng bao gồm:

  • Error-based SQLi: Đầu tiên, kẻ tấn công sẽ cài một đoạn mã độc để hệ thống cơ sở dữ liệu báo lỗi. Sau đó hacker sẽ dùng dữ liệu thu thập được từ những thông báo này để truy xuất ra thông tin của cấu trúc cơ sở dữ liệu.
  • Union-based SQLi: Bằng cách lợi dụng toán tử UNION SQL, hacker sẽ tiến hành hợp nhất các câu lệnh được tạo ra từ cơ sở dữ liệu để thu được một HTTP response. Trong response sẽ chứa thông tin riêng tư mà kẻ tấn công nhắm đến.

Inferential (Blind) SQLi – SQL Injection là gì

Inferential SQLi có đặc tính blind vì hacker sẽ không thể thấy trực tiếp cách mà cuộc tấn công hoạt động. Kẻ tấn công không trực tiếp gây tổn hại đến cơ sở dữ liệu mà sẽ gửi các data payload đến server. Những data payload này sẽ gây ảnh hưởng đến cơ sở dữ liệu của bạn và bạn buộc phải đưa ra những phản ứng công khai. Đây chính là điều hacker cần, họ nắm bắt những phản ứng này và đưa ra những phán đoán về cấu trúc cơ sở dữ liệu của bạn.

Inferential SQLi thường được thực thi chậm hơn vì nó cần đợi những phản ứng của server. Tuy nhiên, thiệt hại nó gây ra lại không vì thế mà bị hạn chế bớt đi. Có 2 biến thể của Inferential SQLi thường xuyên được sử dụng:

  • Boolean: Đầu tiên, kẻ xấu sẽ gửi một câu truy vấn SQL đến cho server. Khi đó, cơ sở dữ liệu buộc phải gửi trả lại kết quả để trả lời cho câu lệnh này. Đáp án có thể là đúng hoặc sai. Dựa theo đáp án mà thông tin của HTTP response sẽ được chỉnh sửa đến khi đúng với thực tế. Vậy là hacker đã nắm được những thông tin xung quanh cấu trúc server.
  • Time-based: Cách thức tấn công này cũng tương tự như Boolean. Tuy nhiên, thay vì đợi cơ sở dữ liệu đưa ra đáp án, hacker sẽ dùng những câu lệnh SQL làm server ngừng hoạt động trong vài giây. Sau đó từ mốc thời gian phản hồi tra ra được kết quả của các truy vấn. Như vậy, một HTTP response đã được tạo ra.
Cách hoạt động của SQL Injection là gì?

Cách hoạt động của SQL Injection là gì?

Out-of-band SQLi

Nếu không thể thực hiện 2 phương pháp trên do server hoạt động quá chậm, không ổn định để tấn công hoặc hacker không có một kênh để đồng thời tấn công và thu thập kết quả thì sẽ kẻ xấu sẽ suy nghĩ đến phương án thứ ba là Out-of-band SQLi.

Tuy nhiên cách này cần có điều kiện: một số tính năng của server phải được kích hoạt. Hacker sẽ nắm lấy cơ hội server tạo ra DNS hay HTTP request để thu lại được dữ liệu cho mình.

Cách phòng chống SQL Injection là gì?

Các hoạt động tấn công chính từ SQL Injection thường xảy ra ở kênh input của người dùng. Vì thế để phòng chống SQL Injection hiệu quả thì ta nên bắt đầu từ việc bảo vệ kênh input.

Không tin tưởng kênh Input của người dùng

Trong thực tế, mọi thông tin trên kênh Input mà người dùng nhập đều được đánh dấu “don’t trust and verify”. Điều này có nghĩa là một thông tin ngoại địa đều sẽ được coi là độc hại, trừ khi có bằng chứng ngược lại. Là một người quản lý server, bạn phải tỉnh táo và không được tin những dữ liệu này. Mọi thứ xâm nhập từ bên ngoài đều phải được quản lý sát sao, bao gồm cả văn bản, input ẩn, các chuỗi tham số truy vấn, cookie và tệp tải lên.

Nếu bạn nghĩ rằng, Browsers trình duyệt của bạn không cho phép người dùng thao tác với một input nên sẽ không thể xảy ra hoạt động xâm nhập, bạn đã nhầm! Có vô số các công cụ đơn giản có thể trợ giúp người dùng giả mạo danh tính trên server của bạn, ví dụ có thể kể đến Burp Suite. Vậy nếu dùng Base 64 để mã hóa dữ liệu thì sao, cách này có thể tạo thêm khó khăn cho hacker, nhưng nó vẫn có thể được giải một cách dễ dàng. Khi không còn bất kỳ lớp phòng ngự nào, kẻ xấu sẽ chiếm được HTTP requests và tiến hành xáo trộn thông tin trước khi chúng được gửi về máy chủ.

Hãy cảnh giác với mọi Input người dùng

Hãy cảnh giác với mọi Input người dùng

Xác nhận chuỗi các input ở phía máy chủ – SQL Injection là gì

Nếu không thể tạo ra một bức tường đủ dày, vậy thì bạn hãy tăng cường độ kiểm soát các vị khách ra vào. Việc xác minh kỹ càng chuỗi các input không bao giờ là điều thừa thãi. Nó giúp tìm ra những lệnh ẩn độc hại được nhấn chìm trong dữ liệu thông thường và chặn các kết nối xấu này ngay lập tức. Ví dụ, trên PHP, bạn có thể sử dụng lệnh: mysql \ _real \ _escape \ _string () để loại ra các ký tự có thể làm thay đổi bản chất của SQL. Đây là phương án rất an toàn và hiệu quả nếu bạn có thắc mắc cách chống SQL Injection là gì.

Nhiều người thắc mắc rằng, liệu trang web của họ có bị tấn công không khi đã có những bước xác thực phía khách rồi. Điều này là cần thiết nhưng vẫn không đủ. Thực tế cho thấy rằng một số công cụ như browser tweak vẫn có thể vượt qua bước xác minh này một cách dễ dàng. Và đó là cách mà một cuộc tấn công SQL Injection bắt đầu. Vậy nên để chắc chắn, hãy xác nhận chuỗi các input ở cả phía máy chủ nữa.

Sử dụng các câu lệnh tham số

Một cách hiệu quả khác nữa để ngăn chặn các SQL Injection là sử dụng câu lệnh tham số. Việc tham số hóa các câu lệnh giúp cơ sở dữ liệu có thể phân biệt giữa mã và dữ liệu đầu vào. Chính vì thế, nó sẽ dễ dàng chặn lại các dữ liệu không được cung cấp tham số khi chúng muốn xâm nhập.

Cách phòng chống SQL Injection là gì?

Cách phòng chống SQL Injection là gì?

Tham khảo thêm: Heroku là gì? Phân tích các tính năng và ưu nhược điểm

Kết luận SQL Injection là gì?

SQL Injection đã và đang là một hiểm họa tiềm tàng đối với mọi doanh nghiệp. Những tổn thất nó gây ra là không hạn chế, vì thế người dùng phải thật cẩn thận với lỗi tấn công này. Tuy nhiên, bạn không cần quá lo lắng. Chỉ cần nắm rõ những thông tin về SQL Injection là gì cũng như chống lại nó là đã có thể giảm thiểu tỷ lệ bị tấn công rất nhiều rồi. Mong rằng những thông tin vừa được Teky mang đến sẽ giúp bạn hình dung rõ về loại tấn công này và có những phương án phòng bị thích hợp.

The post SQL Injection là gì? 3 cách phòng chống SQL Injection hiệu quả nhất appeared first on TEKY - Học viện sáng tạo công nghệ.



source https://teky.edu.vn/blog/sql-injection-la-gi/

Không có nhận xét nào:

Đăng nhận xét