Bạn có lo ngại tấn công SQL injection trên trang web? Nếu đọc bài này, có thể bạn đã biết hậu quả. Trong bài, bạn sẽ học cách dễ dàng ngăn chặn SQL injection.
SQL injection cho phép tin tặc chiếm đoạt trang WordPress và truy cập kiểm soát. Từ đó, họ chuyển hướng traffic, đánh cắp dữ liệu mật, tiêm link spam, thao túng kết quả tìm kiếm bằng ký tự Nhật và hiển thị quảng cáo sản phẩm trái phép. Loại tấn công này gây thiệt hại không thể khôi phục cho trang và doanh nghiệp.
May mắn thay, SQL injection có thể ngăn chặn nếu bạn thực hiện đúng biện pháp bảo mật. Trong hướng dẫn này, chúng tôi giải quyết SQL injection và thảo luận sâu các biện pháp hiệu quả ngăn chặn và bảo vệ trang WordPress.
Tóm tắt: Bạn có thể ngăn chặn SQL injection trên trang WordPress bằng plugin bảo mật tin cậy. Cài MalCare và plugin sẽ tự động quét và bảo vệ trang khỏi các cuộc tấn công như vậy.
Tấn Công SQL Injection Là Gì?
Tất cả trang WordPress thường có khu vực đầu vào cho phép người truy cập nhập thông tin. Có thể là thanh tìm kiếm, biểu mẫu liên hệ, hoặc biểu mẫu đăng nhập.
Trong biểu mẫu liên hệ, người truy cập nhập dữ liệu như tên, số điện thoại, email và gửi đến trang.
Dữ liệu này gửi đến cơ sở dữ liệu MySQL trang web. Nó được xử lý và lưu ở đây.
Bây giờ, các trường đầu vào cần cấu hình đúng để đảm bảo dữ liệu được xác thực và làm sạch trước khi vào cơ sở dữ liệu. Ví dụ, lỗ hổng biểu mẫu liên hệ là, nó nên chỉ chấp nhận chữ và số. Nên không chấp nhận ký hiệu. Bây giờ, nếu trang chấp nhận bất kỳ dữ liệu nào qua biểu mẫu, tin tặc tận dụng chèn truy vấn SQL độc hại như:
txtUserId = getRequestString("UserId"); txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
Khi script lưu trong cơ sở dữ liệu, tin tặc chạy nó để chiếm quyền kiểm soát trang. Họ tiến hành khai thác SQL injection, xâm nhập trang, và thực hiện hoạt động độc hại. Bắt đầu gian lận khách hàng, chuyển hướng người truy cập đến trang lừa đảo, v.v.
Vì vậy, nếu trang không làm sạch dữ liệu từ các trường đầu vào, nghĩa là nó có lỗ hổng SQL injection.
Tấn Công SQL Hoạt Động Như Thế Nào?
Tin tặc nhắm trang web có biện pháp bảo mật yếu hoặc lỗ hổng giúp dễ xâm nhập. Theo kinh nghiệm, plugin và theme thường phát triển lỗ hổng và tin tặc nhận thức rõ. Họ lùng sục internet liên tục tìm trang dùng plugin và theme dễ bị tấn công.
Để giải thích, dùng kịch bản ví dụ. Giả sử Anh A dùng plugin 'Contact Form' cho biểu mẫu trang Liên Hệ. Giả sử lỗ hổng SQL injection tìm thấy trong plugin phiên bản 2.4 và nhà phát triển khắc phục, phát hành phiên bản 2.4.1.
Khi phát hành, nhà phát triển tiết lộ lý do cập nhật làm công khai lỗ hổng. Tin tặc biết có lỗ hổng bảo mật trong Contact Form phiên bản 2.4.
Bây giờ, Anh X trì hoãn cài cập nhật vài tuần vì không có thời gian. Đây là nơi sai lầm.
Khi tin tặc biết lỗ hổng, họ chạy chương trình hoặc dùng scanner lỗ hổng爬 qua internet tìm trang dùng phiên bản cụ thể plugin/theme.
Trường hợp này, họ tìm trang dùng Contact Form 2.4. Khi tìm thấy, họ biết chính xác lỗ hổng web làm cho hack dễ dàng hơn. Họ khai thác lỗ hổng SQL injection và xâm nhập trang.
Các Loại SQL Injection
Tin tặc dùng hai loại SQL injection:
1. SQL injection kinh điển (Classic) – Khi truy cập trang, trình duyệt (Chrome, Mozilla) gửi yêu cầu HTTP đến máy chủ trang để hiển thị nội dung. Máy chủ web lấy nội dung từ cơ sở dữ liệu và gửi lại trình duyệt. Đó là cách bạn xem front-end trang.
Cơ sở dữ liệu chứa mọi dữ liệu bao gồm dữ liệu mật như chi tiết khách hàng, thông tin thanh toán, tên người dùng và mật khẩu. Cơ sở dữ liệu nên cấu hình chỉ phát hành dữ liệu front-end. Tất cả dữ liệu mật nên được bảo vệ. Nhưng nếu kiểm tra bảo mật ứng dụng không có, tin tặc tận dụng.
Trong tấn công SQL injection kinh điển, tin tặc gửi yêu cầu độc hại đến cơ sở dữ liệu lấy dữ liệu về trình duyệt của họ. Nhưng họ dùng chuỗi truy vấn yêu cầu thông tin nhạy cảm như thông tin đăng nhập trang. Nếu bạn không bảo vệ thông tin này, nó gửi cho tin tặc. Cách đó, họ lấy thông tin đăng nhập và xâm nhập trang. Kẻ tấn công cũng dùng prepared statements thực thi cùng hoặc tương tự câu lệnh cơ sở dữ liệu lặp lại hiệu quả cao.
2. SQL injection mù (Blind) – Trong này, tin tặc tiêm script độc hại qua trường đầu vào trang. Khi lưu trong cơ sở dữ liệu, họ thực thi gây thiệt hại như thay đổi nội dung trang hoặc xóa toàn bộ cơ sở dữ liệu. Trong trường hợp này, họ dùng script độc hại chiếm quyền admin.
Cả hai kịch bản gây tác động tàn khốc cho trang và doanh nghiệp. May mắn, bạn ngăn chặn bằng biện pháp bảo mật và xác thực đầu vào đúng.
Các Bước Ngăn Chặn Tấn Công SQL Injection
Để ngăn chặn SQL injection, bạn cần đánh giá bảo mật trang. Đây là hai loại biện pháp – dễ và phức tạp kỹ thuật.
Biện Pháp Ngăn Chặn Dễ Dàng
- Cài plugin bảo mật
- Chỉ dùng theme và plugin đáng tin cậy
- Xóa phần mềm pirated trên trang
- Xóa theme và plugin không hoạt động
- Cập nhật trang thường xuyên
Biện Pháp Ngăn Chặn Kỹ Thuật
- Thay đổi tên cơ sở dữ liệu mặc định
- Kiểm soát nhập trường và gửi dữ liệu
- Cứng hóa (Harden) trang WordPress
Hãy bắt đầu.
Biện Pháp Ngăn Chặn Dễ Dàng Chống SQL Injection
1. Cài plugin bảo mật
Kích hoạt plugin bảo mật trang là bước đầu bảo vệ trang. Plugin bảo mật WordPress giám sát trang và ngăn tin tặc xâm nhập.
Có nhiều plugin chọn, nhưng dựa trên tính năng, chúng tôi chọn MalCare. Plugin tự động dựng tường lửa ứng dụng web bảo vệ trang khỏi tấn công. Cố gắng hack được xác định và chặn.
Tiếp, bộ quét bảo mật plugin quét trang kỹ lưỡng mỗi ngày. Nếu có hành vi đáng ngờ hoặc hoạt động độc hại, bạn được cảnh báo ngay. Bạn hành động và khắc phục ngay với MalCare trước khi Google blacklist hoặc host treo trang.
2. Cập nhật trang thường xuyên
Như nhắc trong ví dụ SQL injection, khi nhà phát triển tìm lỗ hổng bảo mật phần mềm, họ khắc phục và phát hành phiên bản mới mang bản vá. Bạn cần cập nhật phiên bản mới để loại bỏ lỗ hổng.
Chúng tôi đề xuất dành thời gian mỗi tuần cập nhật lõi WordPress, theme, plugin.
Tuy nhiên, nếu thấy bản cập nhật bảo mật phát hành, cài ngay lập tức.
3. Chỉ dùng theme và plugin đáng tin cậy
WordPress phổ biến nhờ plugin và theme làm dễ dàng và tiết kiệm. Nhưng trong số nhiều theme plugin, cần chọn kỹ. Kiểm tra chi tiết plugin như số cài đặt hoạt động, ngày cập nhật cuối, phiên bản test.
Chúng tôi khuyến khích tải từ kho WordPress. Với theme plugin khác, cần nghiên cứu đúng xác minh uy tín. Vì một số theme plugin bên thứ ba có thể được tạo độc hại bởi tin tặc. Hoặc chỉ code kém mở lỗ hổng.
4. Xóa phần mềm pirated trên trang
Theme và plugin pirated (nulled) hấp dẫn. Cho truy cập tính năng premium miễn phí. Nhưng đáng tiếc, thường đi kèm mã độc preloaded. Phần mềm pirated là cách dễ tin tặc phân phối mã độc.
Khi cài, mã độc kích hoạt và nhiễm trang. Tốt nhất tránh phần mềm như vậy.
5. Xóa theme và plugin không hoạt động
Phổ biến cài plugin rồi quên năm năm. Thói quen này phơi bày trang cho tin tặc. Càng nhiều plugin theme cài, càng nhiều cơ hội lỗ hổng xuất hiện và tin tặc tận dụng.
Chúng tôi đề xuất chỉ giữ plugin theme bạn dùng. Xóa phần còn lại làm trang an toàn hơn. Cũng quét theme plugin hiện có thường xuyên.
Biện Pháp Ngăn Chặn Kỹ Thuật
Các biện pháp này cần kiến thức sâu về WordPress. Tuy nhiên, ngày nay có plugin cho mọi thứ. Vì vậy không lo về phức tạp triển khai. Chúng tôi làm đơn giản!
1. Thay đổi tên bảng cơ sở dữ liệu mặc định
Trang WordPress gồm tệp và cơ sở dữ liệu. Trong cơ sở dữ liệu, có 11 bảng mặc định. Mỗi bảng chứa dữ liệu và cấu hình khác nhau. Bảng được đặt tên với tiền tố 'wp_'. Tên bảng là wp_options, wp_users, wp_meta. Bạn hiểu ý.
Tên này giống nhau mọi trang WordPress và tin tặc biết. Tin tặc biết bảng nào lưu dữ liệu gì. Khi tin tặc chèn script độc hại, họ biết script lưu ở đâu. Dùng phương pháp đơn giản, họ thực thi lệnh SQL chạy hoạt động độc hại.
Nhưng nếu đổi tên bảng, nó ngăn cản tin tặc tìm nơi script. Vì vậy khi hack tiêm mã SQL vào bảng cơ sở dữ liệu, họ không tìm ra tên bảng.
Bạn làm bằng plugin như Change Table Prefix hoặc Brozzme. Cài một trong hai và làm theo bước.
Bạn cũng làm thủ công chỉnh sửa tệp wp-config. Cảnh báo – sai lầm nhỏ dẫn đến lỗi cơ sở dữ liệu và trục trặc trang. Sao lưu trước khi tiến hành.
- Vào tài khoản hosting > cPanel > File Manager.
- Truy cập thư mục public_html chuột phải wp-config.
- Chọn Edit tìm mã
"$table_prefix = 'wp_';" - Thay bằng –
"$table_prefix = 'test_';"
Bạn chọn tiền tố bất kỳ. Ở đây chọn 'test_' làm tên cơ sở dữ liệu mới. Khi xong, tin tặc không tìm ra lệnh SQL.
2. Kiểm soát nhập trường và gửi dữ liệu
Bạn cấu hình tất cả trường đầu vào trang chỉ chấp nhận loại dữ liệu nhất định. Ví dụ, trường tên chỉ cho phép chữ (alpha) vì không lý do nhập số. Tương tự, trường số điện thoại chỉ chấp nhận chữ số.
Bạn dùng hàm sanitize_text_field() làm sạch đầu vào người dùng. Xác thực đầu vào này đảm bảo mục nhập không đúng hoặc nguy hiểm bị chặn.
3. Cứng hóa (Harden) trang WordPress
Đây là bước quan trọng nhất bảo vệ WordPress chống SQL injection. Cứng hóa trang web là gì?
Trang WordPress cung cấp nhiều chức năng chạy trang. Tuy nhiên, đa số người không dùng nhiều chức năng. WordPress.org khuyến khích vô hiệu hóa hoặc loại bỏ một số nếu không dùng. Giảm cơ hội tấn công vì ít yếu tố hơn cho tin tặc thử!
Một số biện pháp cứng hóa WordPress:
- Vô hiệu hóa trình soạn thảo tệp
- Vô hiệu hóa cài đặt plugin hoặc theme
- Triển khai xác thực 2 yếu tố
- Giới hạn lần đăng nhập
- Thay đổi khóa bảo mật và salt WordPress
- Chặn thực thi PHP trong thư mục không xác định
Để triển khai, bạn dùng plugin như MalCare cho phép làm vài click.
Hoặc triển khai thủ công theo Hướng Dẫn Cứng Hóa WordPress.
Điều đó kết thúc ngăn chặn SQL injection. Nếu triển khai biện pháp chúng tôi thảo luận trong cheat sheet này, trang bạn sẽ an toàn
Tấn công SQL injection có thể ngăn chặn! Dùng hướng dẫn này triển khai biện pháp bảo mật đúng trên WordPress. Click to Tweet
Tóm Lại
Phòng bệnh thực sự tốt hơn chữa bệnh. Tấn công SQL injection gây stress không cần thiết và gánh nặng tài chính nghiêm trọng.
Hầu hết biện pháp hôm nay dễ triển khai nhờ plugin. Vì vậy không lo nếu không rành công nghệ! Bạn vẫn tự bảo vệ!
Cùng triển khai biện pháp, chúng tôi mạnh mẽ đề xuất kích hoạt MalCare. Tường lửa chủ động bảo vệ trang khỏi tấn công. Quét trang mỗi ngày kiểm tra cố gắng hack và mã độc.
Bạn nghĩ nó như vệ sĩ bảo mật trang web giám sát và giữ kẻ xấu ra ngoài. Bạn yên tâm trang được bảo vệ.
Ngăn Chặn Tấn Công Hack Với Plugin Bảo Mật MalCare!