Đây là hướng dẫn từng bước về cách bảo vệ blog của bạn, nhưng trước khi chúng ta bắt đầu, bạn nên biết một số điều đơn giản:
- luôn cập nhật blog, plugin và chủ đề WordPress của bạn, vì các phiên bản mới thường có các bản sửa lỗi bảo mật quan trọng
- vui lòng sử dụng mật khẩu thực sự mạnh (không sử dụng «12345» hoặc «qwerty»!)
- kết nối trang web của bạn chỉ bằng ứng dụng SFTP
- và đừng quên cài đặt chương trình chống vi-rút trên PC của bạn
Bước 1. Sao lưu
Điều bạn phải làm đầu tiên là sao lưu cơ sở dữ liệu của bạn. Bạn có thể sao lưu nó theo cách thủ công trong phpMyAdmin bằng cách chuyển đến tab Export.

Một cách khác – là sử dụng plugin WordPress, cho phép bạn tạo bản sao lưu cơ sở dữ liệu. Có rất nhiều plugin như vậy nhưng hôm nay tôi khuyên bạn nên sử dụng BackWPUp .
Sau khi tạo bản sao lưu cơ sở dữ liệu, bạn có thể sao lưu các tệp chủ đề và thư mục tải lên. Làm theo cách bạn muốn (ví dụ: SFTP).
Các tệp và plugin cốt lõi của WordPress không cần phải sao lưu, trừ khi tệp của chúng không bị thay đổi, vì bạn luôn có thể tải xuống phiên bản WordPress sạch mới nhất và cài đặt các plugin (không có mã độc hại, có thể lây lan qua các tệp trang web của bạn trước đây).
Bước 2. Chmod
Bạn nên thiết lập các quyền sau cho các tệp và thư mục WordPress:
Thư mục | Chmod |
---|---|
/ wp-content / | 755 (hoặc 777 nếu cần) |
/ wp-content / themes / | 755 |
/ wp-content / plugins / | 755 |
/ wp-admin / | 755 |
/ wp-includes/ | 755 |
wp-config.php | 400 (hoặc 440) |
Để thiết lập quyền chmod, bạn có thể sử dụng ứng dụng khách SFTP của mình.
Bước 3. Bảo mật khu vực quản trị
Lớp bảo vệ thứ hai
Đây là một biện pháp bảo vệ thực sự mạnh mẽ nhưng tôi không khuyên bạn nên sử dụng nó khi:
- nếu bạn đang sử dụng
admin-ajax.php
trình xử lý trên trang web của mình - nếu bạn không phải là tác giả duy nhất trên blog
Vì vậy, đây là cách để làm điều đó. Trên thực tế, có hai cách – bảo mật bằng mật khẩu hoặc bảo mật bằng địa chỉ IP. Hãy bắt đầu với bảo vệ mật khẩu bổ sung. Bạn cần tạo hai tệp trong thư mục wp-admin
– .htaccess
và .htpasswd
Nội dung của .htaccess
tệp:
1 2 3 4 5 6 |
AuthType Basic # Welcome message AuthName "Hi, HungWP!" # Full path to .htpasswd file AuthUserFile /home/hungwordpress.com/public_html/wp-admin/.htpasswd require valid-user |
Tệp .htpasswd
phải chứa tên người dùng và mật khẩu, mỗi cặp ở dòng tiếp theo. Bạn có thể tạo mật khẩu được mã hóa của mình trên trang này .
Nội dung ví dụ của .htpasswd
tệp:
1 2 |
user1:$apr1$lw9zPE5c$uTNLHKL6LTk4M4awpGHlZ0 user2:$apr1$xpogQMCP$kC9GZ8ufEMfABa5NfjvGP1 |
Chặn hoàn toàn khu vực quản trị bằng địa chỉ IP
Nếu bạn không muốn đăng nhập khu vực quản trị hai lần, bạn có thể chặn nó bằng địa chỉ IP. Tất cả những gì bạn cần là đưa vào /wp-admin/
thư mục .htaccess
tệp với nội dung sau:
1 2 3 4 5 6 |
satisfy any order deny,allow deny from all allow from 11.178.207.255 #you can specify another lines with allowed IP addresses require valid-user |
Bước 4. Bảo vệ khỏi các cuộc tấn công
Thay đổi thông báo lỗi mặc định khi đăng nhập không thành công.
Khi bạn không thành công, WordPress sẽ hiển thị cho bạn biết bạn đã làm sai điều gì – đăng nhập hoặc mật khẩu theo mặc định. Điều này có thể hữu ích cho tin tặc để bắt đầu một cuộc tấn công. Vì vậy, họ có thể lấy mật khẩu của bạn nếu họ biết thông tin đăng nhập của bạn.
Có hai thông báo lỗi mặc định trong WordPress. Khi tên người dùng không hợp lệ:

Và khi tên người dùng ổn, nhưng mật khẩu sai:

Phương án giải quyết là bạn đặt mã này vào functions.php
tệp của bạn.
1 2 3 4 5 |
function remove_default_login_errors(){ return 'Error: username or password is incorrect.'; } add_filter( 'login_errors', 'remove_default_login_errors' ); |
=> thành quả

Thay đổi tên người dùng quản trị viên mặc định
Mọi người đều biết tên người dùng quản trị mặc định của WordPress. Tất nhiên, các hacker cũng biết điều đó.
Vì vậy, chức năng này cho phép bạn thay đổi thông tin đăng nhập của bất kỳ người dùng nào bất cứ lúc nào bạn muốn.
1 2 3 4 5 6 7 8 9 10 |
function true_change_username( $new_username, $user_id = 1) { global $wpdb; $wpdb->update( $wpdb->prefix . 'users', array( 'user_login' => $new_username ), array( 'ID' => $user_id ), array( '%s' ), array( '%d' ) ); } |
$ new_username
(chuỗi) tên người dùng mới
$ user_id
(số nguyên) ID của người dùng bạn muốn thay đổi tên người dùng, theo mặc định – người dùng quản trị có ID = 1
Chèn chức năng này vào trang web của bạn và sau đó chỉ cần chạy nó một lần.
1 |
true_change_username( 'superadmin' ); // this will change default admin username |
Cách ẩn tên người dùng khỏi lớp bình luận
Vì vậy, bạn đã thay đổi tên người dùng của mình nhưng nếu điều này không giúp được gì? Và tại sao? Bây giờ hãy nhìn vào ảnh chụp màn hình của tôi, đây là mã HTML của một bình luận của người dùng trên blog:

=> đây là một tên người dùng. Và khi bạn đã đăng nhập với tư cách quản trị viên và đã đăng bình luận, tin tặc có thể dễ dàng lấy được thông tin đăng nhập của bạn. Làm thế nào để ngăn chặn điều này?
Cách đầu tiên là không sử dụng tài khoản quản trị để bình luận blog. Cách thứ hai và là cách tốt nhất đơn giản là thay đổi hoặc ẩn tên người dùng quản trị khỏi thuộc tính lớp nhận xét bằng cách chèn mã sau vào functions.php
tệp chủ đề của bạn.
1 2 3 4 5 6 7 8 9 10 11 |
function true_username_css_class( $classes ) { foreach( $classes as $key => $class ) { if(strstr($class, "comment-author-superadmin")) { // you should change superadmin to your current username $classes[$key] = 'comment-author-admin'; // if you want to cheet hackers, or just comment-admin, if you want to completely hide username from the class } } return $classes; } add_filter('comment_class', 'true_username_css_class'); |
Nếu bạn muốn xóa tất cả tên người dùng khỏi lớp nhận xét:
1 2 3 4 5 6 7 8 9 |
function true_completely_remove_css_class( $classes ) { foreach( $classes as $key => $class ) { if(strstr($class, "comment-author-")) { unset( $classes[$key] ); } } return $classes; } add_filter('comment_class', 'true_completely_remove_css_class'); |
Giới hạn số lần đăng nhập
Có một plugin tuyệt vời, Limit Login Attempts Reloaded . Nó vô hiệu hóa chức năng đăng nhập cho một phạm vi IP nhất định, nếu phát hiện nhiều hơn một số lượng tham dự nhất định từ phạm vi này trong một khoảng thời gian ngắn.
Bước 5. Bảo mật tệp cấu hình
Ý tôi là wp-config.php
. Tệp này chứa tên người dùng và mật khẩu cơ sở dữ liệu, do đó, nó cũng phải được bảo vệ. Làm thế nào để làm nó? Chỉ cần di chuyển trang web của bạn wp-config.php
vào thư mục phía trên thư mục trang web của bạn.
Bạn cũng có thể bảo vệ nó bằng .htaccess
các quy tắc, đặt mã này vào .htaccess
tệp nằm trong cùng thư mục với wp-config.php
.
1 2 3 4 5 |
<files wp-config.php> order allow,deny deny from all </files> |
Bước 6. Tắt trình chỉnh sửa tệp
Nếu ai đó có quyền truy cập vào bảng điều khiển trang web của bạn với tư cách là quản trị viên, người đó có thể cũng có thể chỉnh sửa các tệp plugin và chủ đề trang web. Để ngăn chặn khả năng này từ bất kỳ ai, bạn nên thêm dòng sau vào wp-config.php
tệp.
1 |
define('DISALLOW_FILE_EDIT', true); |
Sau khi bạn làm điều đó, trình chỉnh sửa sẽ biến mất. Ngoài ra, nó sẽ không có sẵn bởi URL.
Bước 7. Thay đổi tiền tố cơ sở dữ liệu
Nếu bạn chưa cài đặt blog của mình, bạn có thể thiết lập tiền tố cơ sở dữ liệu trong quá trình cài đặt.

Nếu bạn đã cài đặt blog WordPress – hãy làm theo hướng dẫn này.
Lúc đầu, bạn nên mở wp-config.php
tệp của mình và thay đổi dòng này:
1 |
$table_prefix = 'wp_'; |
Ví dụ:
1 |
$table_prefix = 'Izweb2022_'; |
Sau đó, bạn nên chạy một vài truy vấn SQL. Bạn có thể làm điều đó trong tab phpMyAdmin SQL. Có các truy vấn:
1 2 3 4 5 6 7 8 9 10 11 |
RENAME TABLE wp_commentmeta TO new1234_commentmeta; RENAME TABLE wp_comments TO new1234_comments; RENAME TABLE wp_links TO new1234_links; RENAME TABLE wp_options TO new1234_options; RENAME TABLE wp_postmeta TO new1234_postmeta; RENAME TABLE wp_posts TO new1234_posts; RENAME TABLE wp_terms TO new1234_terms; RENAME TABLE wp_term_relationships TO new1234_term_relationships; RENAME TABLE wp_term_taxonomy TO new1234_term_taxonomy; RENAME TABLE wp_usermeta TO new1234_usermeta; RENAME TABLE wp_users TO new1234_users; |
1 2 |
PDATE new1234_options SET option_name = 'new1234_user_roles' WHERE option_name = 'wp_user_roles'; UPDATE new1234_usermeta SET meta_key = 'new1234_capabilities' WHERE meta_key = 'wp_capabilities'; |
Bước 8. Xóa phiên bản WordPress khỏi nguồn cấp dữ liệu RSS và khỏi trang web <head>
Đây có thể là bước rất quan trọng, đặc biệt nếu bạn không cập nhật WordPress của mình thường xuyên. Đây cũng là bước đơn giản nhất để làm. Chỉ cần chèn mã sau vào functions.php
tệp của bạn:
1 2 3 4 |
function remove_wp_version() { return ''; } add_filter('the_generator', 'remove_wp_version'); |
Phiên bản 2.0 của plugin WPCode – Insert Headers and Footers + Custom Code Snippets – WordPress Code Manager đã hỗ trợ + thêm nhiều option khá hay ho.
Bước 9. Chặn hotlink với file .htaccess:
Vì vậy, liên kết nóng là khi ai đó ăn cắp nội dung trang web của bạn (thường là hình ảnh) và chèn liên kết trực tiếp đến chúng trên trang web của chính họ. Vấn đề là chúng ăn cắp không chỉ hình ảnh mà còn cả băng thông của bạn.
Và làm thế nào chúng ta có thể ngăn chặn điều này? Khá đơn giản! Sẽ có một mã khác cho của bạn .htaccess
. Bạn có thể sử dụng .htaccess
nằm trong thư mục gốc trang web của mình nhưng cũng có thể sử dụng nằm trong thư mục có hình ảnh.
1 2 3 |
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?hungwordpress.com/.*$ [NC] RewriteRule ^.*.(bmp|tif|gif|jpg|jpeg|jpe|png)$ - [F] |
Bước 10. Bảo vệ thư mục tải lên của bạn
Mã này từ chối quyền truy cập vào bất kỳ tệp nào trong thư mục ngoại trừ các tệp có phần mở rộng nhất định. Vì vậy, nó cũng vô hiệu hóa việc thực thi các tệp PHP trong thư mục này (và cả trong tất cả các thư mục con của nó).
1 2 3 4 5 6 7 8 9 10 |
#at first we completely disable access to all the files <FilesMatch ^> Order Allow,Deny Deny from all </FilesMatch> #after that add file extensions you want to allow access <filesmatch ".(jpg|jpeg|jpe|gif|png|tif|tiff|pdf)$"=""> Order Deny,Allow Allow from all </FilesMatch> |
Hoặc bạn chỉ có thể tắt thực thi tệp PHP:
1 2 3 |
<Files *.php> deny from all </Files> |
Tôi khuyên bạn nên bảo vệ /wp-includes/
thư mục.
Tệp đầu tiên bạn nên xóa là readme.html
, nằm trong thư mục gốc blog của bạn. Tệp này chứa phiên bản WordPress mà bạn sử dụng. Hãy nhớ rằng tin tặc có thể tìm ra cách khai thác thích hợp cho phiên bản chính xác của WordPress.
Một tập tin khác install.php
nằm trong thư mục /wp-admin/
. Đây là tập lệnh cài đặt và cũng nên được gỡ bỏ.
Các tệp đã xóa sẽ xuất hiện lại sau mỗi lần cập nhật WordPress.