Làm thế nào để bảo vệ và tối ưu hóa cơ sở dữ liệu WordPress?
17 Nov, 2021 admin
WordPress là một script mã nguồn mở to lớn. Nó yêu cầu cần có MySQL và PHP để vận hành. PHP hoạt động bằng cách truy xuất thông tin từ cơ sở dữ liệu để hiển thị trên các trang web. Đối với MySQL, nó là một hệ thống quản lý cơ sở dữ liệu được sử dụng để lưu trữ thông tin và các thiết lập của một trang web WordPress.
Dù vậy bạn không cần phải tìm hiểu PHP hoặc MySQL để xây dựng một trang web WordPress, nhưng kiến thức về chúng sẽ là điều cần thiếvới bạn. Nó giúp bạn hiểu cách hoạt động của WordPress và cách thức nó xử lý tất cả mọi thứ tự động. Trong bài viết này, bạn sẽ tìm hiểu xem một cơ sở dữ liệu WordPress là gì, nó hoạt động như thế nào và cuối cùng là làm thế nào để bảo vệ nó.
Cơ sở dữ liệu WordPress là gì?
Khi bạn cài đặt WordPress, bạn phải đặt tên cơ sở dữ liệu, tên người dùng và mật khẩu. Thông tin này được lưu trữ trong tập tin configuration của WordPress là wp-config.php. Trong khi cài đặt, 11 bảng cơ sở dữ liệu được tạo ra, và nội dung được mặc định lưu trữ bên trong chúng.
Mỗi một nội dung trong các bảng chứa các loại dữ liệu khác nhau ví dụ bài viết, trang, bình luận, tag, category, các thiết lập theme, vv. Bất cứ khi nào bạn tạo ra một bài đăng, trang hoặc thêm một bình luận mới, WordPress sẽ chạy truy vấn SQL để xây dựng các dynamic page và nội dung được lưu trữ trong bảng cơ sở dữ liệu tương ứng của chúng.
Với một thiết lập như thế này, bạn không còn cần phải tạo một file .html cho mỗi trang. Tất cả mọi thứ xảy ra tự động. Đó là điều tuyệt vời của WordPress!
Các theme và plugin sử dụng cơ sở dữ liệu WP để lưu dữ liệu cài đặt và cấu hình của chúng. Đôi khi các giải pháp của bên thứ 3 tạo bảng riêng cho chúng. Các bảng không tách rời với việc cài đặt và do đó nó không phải là none-core database table.
Hiện nay, có 11 bảng cơ sở dữ liệu chính, chúng ta hãy xem qua về chúng:
- wp_commentmeta: bảng này có chứa các metadata về bình luận.
- wp_comments: tất cả các bình luận được lưu trữ trong bảng này.
- wp_links: bảng này được sử dụng để bao gồm các liên kết danh sách blog WordPress phiên bản trước đó.
- wp_options: bảng này chứa trang web cài đặt, các plugin được kích hoạt, định dạng thời gian, email của admin, vv.
- wp_postmeta: bảng này có chứa các siêu dữ liệu về các bài viết, các trang và các loại bài tùy chỉnh.
- wp_posts: bảng này lưu trữ tất cả các bài viết, các trang và mục bài viết tùy chỉnh.
- wp_terms: taxonomy, các category và tag tuỳ chỉnh tất cả đều được lưu trữ trong bảng này. Cũng có thể là một bảng wp_termmeta, nhưng đó là ra khỏi phạm vi của bài viết này.
- wp_term_relationships: bảng này xác định các mối quan hệ giữa các taxonomy và các loại bài viết.
- wp_term_taxonomy: bảng này phân biệt giữa các taxonomy ( category, tag và link)cho các mục trong wp_terms.
- wp_usermeta: tất cả các siêu dữ liệu về người dùng đăng ký đi ở đây.
- wp_users: tất cả người dùng đăng ký được lưu trữ trong bảng này.
WordPress tables phpMyAdmin
Tại sao cơ sở dữ liệu quan trong như vậy?
Giả sử rằng bạn đã từng viết nội dung, thêm các plugin và tinh chỉnh chúng đến từng chi tiết nhỏ nhất trong nhiều năm qua. Bạn có hàng trăm bài viết, các trang và hàng chục ngàn bình luận. Những thứ này sẽ đi tới đâu? Câu trả lời là cơ sở dữ liệu! Mỗi bài, trang, category, tag, bình luận và thiết lập mà bạn thực hiện trên một trang web WordPress, nó được lưu trữ trong cơ sở dữ liệu. Nó không chứa các tập tin theme, plugin và phương tiện truyền thông. Tuy nhiên, tất cả nội dung văn bản đi vào cơ sở dữ liệu.
Đây là lý do tại sao bạn phải thực hiện rất nhiều biện pháp phòng ngừa để đảm bảo cơ sở dữ liệu của bạn an toàn. Đó là “xương sống” của trang web bạn.
Nó chứa 90% nội dung của bạn, không bao gồm các tập tin media. Nếu bạn không muốn nội dung của bạn bị đánh cắp, bị nhiễm mã độc hoặc bị xóa, bảo mật cho cơ sở dữ liệu là điều cần thiết.
Làm thế nào để đảm bảo an toàn cho cơ sở dữ liệu?
Là một CMS phổ biến, WordPress là mục tiêu 24/7 bởi các tin tặc cho các lỗ hổng và khai thác. Có rất nhiều kỹ thuật để bảo mật cơ sở dữ liệu. Thay đổi tiền tố cơ sở dữ liệu và hạn chế quyền của người sử dụng là hai bước quan trọng đối với bảo mật chặt chẽ hơn.
Thay đổi tiền tố
Là một phần mềm mã nguồn mở, tên của các bảng cơ sở dữ liệu WordPress đều được mọi người biết đến. Khi nó được cài đặt, table prefix wp_ được gán cho tất cả các bảng.
Ví dụ: wp_comments, wp_posts, wp_postmeta, vv. Người dùng thường sử dụng luôn với tiền tố mặc định này. Chương trình cài đặt nhanh như Softaculous thực hiện cài đặt các script một cách nhanh chóng và dễ dàng. Tuy nhiên, chúng vẫn giữ nguyên wp_ như mặc định bảng tiền tố.
Kể từ khi tin tặc biết điều này, họ thực hiện cuộc tấn công SQL dựa vào yếu tố này. Thay đổi tiền tố bảng thành cái gì đó ngẫu nhiên và không thể đoán được sẽ là một biện pháp an ninh tốt.
Để thay đổi tiền tố bảng cơ sở dữ liệu, hãy làm theo các hướng dẫn:
Bắt đầu bằng cách giữ một bản sao lưu của tất cả mọi thứ
Cài đặt và kích hoạt plugin change DB prefix.
⇒ Đi đến Dashboard »Settings »Change DB prefix
⇒ Nhập tiền tố mà không thể đoán trước được, tiền tố bảng ngẫu nhiên như dabra_ (nên để nó ngắn thôi, tối đa 4 ký tự)
⇒ Nhấp vào “Save Changes”.
Một tiền tố bí mật và khó có thể đoán giảm đáng kể các cuộc tấn công tự động và các script độc hại chạy trên trang web của bạn.
Sao lưu cơ sở dữ liệu của bạn
Điều khôn ngoan nhất bạn có thể làm là hãy sao lưu thường xuyên. Luôn luôn có một bản sao lưu cơ sở dữ liệu. Vì vậy, nếu có bất cứ điều gì trục trặc, bạn có thể chỉ cần chuyển máy chủ khác và trang web của bạn lại hoạt động một cách nhanh chóng. Dưới đây là cách bạn tự sao lưu thủ công cơ sở dữ liệu của mình từ phpMyAdmin:
- Đi đến cPanel »phpMyAdmin.
- Nhấp vào cơ sở dữ liệu trang web của bạn từ phía bên trái.
- Nhấp vào tab “Export”, chọn “Custom” là phương pháp xuất.
- Sau đó chọn Add DROP TABLE / VIEW / PROCEDUCE / FUNTION / EVENT vào tùy chọn Object creation.
- Cuối cùng, nhấp vào “Go.”
Bạn có thể đính kèm các cơ sở dữ liệu này với bất kỳ cài đặt WordPress nào và nhận được chính xác nội dung của bạn. Tuy nhiên, nếu đó là khó khăn, bạn có thể sử dụng một trong những plugin sau và đọc bài hướng dẫn này của chúng tôi Làm Thế Nào Để Sao Lưu Cơ Sở Dữ Liệu WordPress
Tạo & lập lịch trình sao lưu tự động bằng plugin
Nếu bạn không quen sử dụng phpMyAdmin, hoặc có lẽ máy chủ của bạn không có, thì vẫn có rất nhiều plugin sao lưu mà bạn có thể sử dụng để sao lưu các cơ sở dữ liệu của bạn. BackWPup là một plugin sao lưu phổ biến. Nó là một plugin mạnh mẽ và có một bộ các tính năng hữu ích như lưu trữ bản sao lưu trên Dropbox, máy chủ, và S3. Hãy sử dụng nó để tạo ra một bản sao lưu:
- Cài đặt và kích hoạt BackWPup plugin.
- Sau khi kích hoạt, đi đến BackWPup > Add new job.
- Chọn những gì bạn muốn sao lưu (XML file, tập tin theme & plugin, sao lưu cơ sở dữ liệu, vv).
- Định dạng sao lưu phải ở trong định dạng ZIP.
- Chọn nơi bạn muốn nén tập tin để đi ví dụ như trên một máy chủ, email, Dropbox hoặc S3 Dịch vụ.
- Lưu các thay đổi. Sau khi tạo job, bạn có thể chạy nó bất cứ khi nào bạn muốn,và một bản sao lưu mới sẽ được tạo ra với các cài đặt tương tự và gửi tới nơi mà bạn đã chỉ định.
- Để lên lịch sao lưu thường xuyên, đi đến tab Scheldule trên cùng trang đó.
- Chọn “with WordPress cron” phía dưới Start job.
- Xác định lịch trình sao lưu, ví dụ như hàng ngày, hàng tuần hoặc hàng tháng ở dưới cùng của trang.
- Cuối cùng, nhấp vào nút “Save changes”
Khi một lịch trình được thiết lập, bạn sẽ nhận được bản sao lưu tại đích bạn đã chỉ định trong khi tạo ra job. Bạn có thể tham khảo thêm 6 Backup plugin mất phí đỉnh nhất trên WordPress giúp việc sao lưu trở nên dễ dàng hơn bao giờ hết.
Các quyền của người dùng cơ sở dữ liệu
Một điều rất quan trọng là người sử dụng MySQL được chỉ định trong tập tin wp-config.php phải được xem xét một cách nghiệm ngặt. Cho người dùng nhiều quyền hơn có thể là một quyết định không tốt. Trao quyền cho người sử dụng MySQL một cách nghiêm ngặt sẽ bảo đảm an toàn cho bạn. Trong khi cài đặt, việc chỉ định tất cả quyền cho người dùng cơ sở dữ liệu là chấp nhận được vì các bảng thiết yếu, cấu trúc, và các đối tượng mà được thiết lập bởi người sử dụng MySQL. Tuy nhiên, việc trao tất cả quyền cho người dùng chỉ nên tạm thời. Vì vậy, một khi cài đặt xong, trong hầu hết trường hợp, các đặc quyền người dùng MySQL cần là ĐỌC DỮ LIỆU và GHI DỮ LIỆU.
Tìm hiểu sâu hơn
Để tải lên tập tin, tạo bài viết mới, thêm người dùng và cài đặt plugin WordPress thì quyền đọc dữ liệu và viết dữ liệu là đủ. Người dùng không cần phải thay đổi cấu trúc cơ sở dữ liệu, do đó, nó không cần quyền quản trị như GRANT. Hãy giới hạn đặc quyền người dùng MySQL bằng cách:
- Mở cPanel của bạn, cuộn xuống phần cơ sở dữ liệu.
- Nhấp vào cơ sở dữ liệu MySQL. Trên trang tiếp theo, nhấp vào người dùng MySQL được bổ sung vào cơ sở dữ liệu WordPress của bạn.
- Thay đổi các đặc quyền từ tất cả sang trạng thái sau: SELECT ( CHỌN), UPDATE (N NG CẤP), INSERT (CHÈN), DELETE ( XÓA).
Một số theme wordpress và plugin wordpress yêu cầu các đặc quyền khác giống như ALTER để tạo ra các bảng của riêng chúng. Nếu một plugin yêu cầu thêm các đặc quyền cơ sở dữ liệu, hãy liên hệ với nhà phát triển plugin để yêu cầu họ về nó. Ngay sau khi các plugin được kích hoạt và không còn cần các đặc quyền mở rộng, bạn có thể quay lại để cài đặt cơ bản.
Nâng cấp lên phiên bản mới của WordPress cũng đòi hỏi mở rộng đặc quyền. Vì vậy, chỉ định đặc quyền tất cả trong quá trình này và sau đó rút lại chúng khi thực hiện. Các thực hành này sẽ bảo mật tốt hơn là để lại cho các chuyên gia chăm sóc và là không cần thiết trong 90% các trường hợp.
Sử dụng một mật khẩu mạnh
Với số ký tự 1-10, bạn đánh giá mật khẩu cơ sở dữ liệu của bạn mạnh mẽ như thế nào? Mật khẩu như password12345 thật dễ đoán. Mật khẩu giống như là là chìa khóa để mở cửa vào nhà bạn vậy.
Kể từ khi chúng ta về mật khẩu cơ sở dữ liệu, nó là vô cùng quan trọng để đảm bảo rằng bạn đang àn toàn. Mật khẩu cơ sở dữ liệu của bạn phải dài hơn 8 ký tự, nên chứa ký tự chữ số và các ký hiệu ký tự đặc biệt. Mật khẩu này nên ngẫu nhiên, vô nghĩa và không thể nào có thể đoán được. Nếu bạn mất hơn 2 phút để ghi nhớ thì nó là một mật khẩu khá là mạnh đấy. Dưới đây là một vài cách tạo mật khẩu tốt:
- Strong Password Generator
- Dashlane’s Password Generator
Một khi bạn có một mật khẩu mạnh, hãy làm theo các hướng dẫn sau:
- Đi đến cPanel »MySQL databases, hãy nhấp vào “Change Password” cho người dùng gắn liền với trang web của bạn.
- Thay đổi mật khẩu.
- Sau khi thay đổi mật khẩu, đi vào wp-config.php. Cập nhật mật khẩu ở đó luôn.
Kết luận
Thật là tuyệt vời khi có một tiền tố được thay đổi hoàn toàn và quyền sử dụng MySQL nghiêm ngặt. Tuy nhiên, bạn cần phải cẩn thận mọi lúc. Vì vậy, hãy sao lưu thường xuyên. Hầu hết mọi người không nhận ra sự hữu ích của việc sao lưu cơ sở dữ liệu trừ khi họ nhận được một vụ hack. Vì vậy, trước khi quá trễ, tôi khuyên bạn nên sử dụng tất cả các kỹ thuật bảo mật cơ sở dữ liệu được đề cập ở trên. Tin tưởng tôi là những việc đó rất hiệu quả.
Bạn có câu hỏi gì về cơ sở dữ liệu không? Bạn có đang sử dụng một số kỹ thuật nào ở trên này không? Chia sẻ trong phần bình luận dưới đây nếu bạn có bất kỳ câu hỏi nào nhé.
Xem thêm bài hướng dẫn sử dụng wordpress cho người mới bắt đầu của chúng tôi tại đây nhé!