Bảo Mật WordPress Khỏi SQL Injection

Bảo mật cho website luôn là vấn đề được đặt lên hàng đầu của các Web Development. Một trong những tác nhân gây hại nguy hiểm nhất thường được các Hacker khai thác là lỗi SQL Injection trực tiếp nhập lệnh truy vấn SQL từ URL Website từ đó tìm ra lỗ hổng bảo mật.

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ài viết này mình sẽ đề cập đến việc bảo mật WordPress khỏi SQL Injection bằng file Functions.php.

Để 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;
                }
        }
}

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!

Post Comment