SQL Injection là gì ?
Hiểu đơn giản, SQL Injection là là một kỹ thuật để kẻ phá hoại lợi dụng những lỗ hổng về câu truy vấn lấy dữ liệu của những website không an toàn trên web, đây là một kỹ thuật tấn công rất phổ biến và sự thành công của nó cũng tương đối cao.
SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,… trên cơ sở dữ liệu của website, thậm chí là server mà website đó đang chạy, lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase… Và hiển nhiên là WordPress nằm trong danh sách đó.

Có lẽ các bạn đã biết mô hình hoạt động của website rồi phải không? Bởi khi một request được gửi từ người dùng thì ngôn ngữ SERVER như PHP sẽ lấy các thông tin từ người dùng đó. Nhưng bản thân nó không hề phát hiện ra những thông tin đó có chứa những câu SQL độc.
Bảo mật wordpress khỏi SQL Injection bằng Functions
Ngay bên dưới, mình sẽ giới thiệu tới các bạn một đoạn code. Với đoạn code này các câu lệnh sql từ bên ngoài vào các url đều được mã hóa hoặc đóng kết nối giúp website của bạn an toàn hơn.
Để thực hiện các bạn tìm tới file Functions.php của Theme đang sử dụng và thêm đoạn code này vào đầu hoặc cuối file đều được.
global $user_ID; if($user_ID) {
if(!current_user_can('administrator')) {
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
stripos($_SERVER['REQUEST_URI'], "eval(") ||
stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
stripos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
}
}
Tác hại của SQL Injection
- Hack tài khoản cá nhân của người khác.
- Ăn cắp hoặc sao chép dữ liệu của trang web hoặc hệ thống.
- Thay đổi dữ liệu nhạy cảm của hệ thống.
- Xóa dữ liệu nhạy cảm và quan trọng của hệ thống.
- Người dùng có thể đăng nhập vào ứng dụng với tư cách người dùng khác, ngay cả với tư cách quản trị viên.
- Người dùng có thể xem thông tin cá nhân thuộc về những người dùng khác, ví dụ chi tiết hồ sơ của người dùng khác, chi tiết giao dịch của họ,…
- Người dùng có thể sửa đổi cấu trúc của cơ sở dữ liệu, thậm chí xóa các bảng trong cơ sở dữ liệu ứng dụng.
- Người dùng có thể kiểm soát máy chủ cơ sở dữ liệu và thực thi lệnh theo ý muốn.
Bản chất của cuộc tấn công này:
Như đã đề cập trước đó, bản chất của cuộc tấn công này nhằm hack cơ sở dữ liệu với mục đích không tốt. Đầu tiên, bạn cần tìm các phần của hệ thống dễ bị tấn công và sau đó gửi mã SQL độc hại qua chúng tới cơ sở dữ liệu. Nếu loại tấn công này khả thi cho hệ thống, mã SQL độc hại thích hợp sẽ được gửi và các hành động có hại có thể được thực hiện trong cơ sở dữ liệu.
Mục đích
Mục đích chính của bài viết này mình muốn giới thiệu tới các bạn mức độ nguy hiểm của SQL Injection và cách phòng chống tốt nhất từ những kẻ phá hoại. Các bạn nên sử dụng cho mọi dự án của mình và đừng quên theo dõi chủ đề Bảo Mật WordPress trên Blog
Comments (0)