Viblo May Fest 2021 là sự kiện nhằm thúc đẩy việc chia sẻ kiến thức, chung tay phát triển cộng đồng IT Việt Nam. Những người tham gia sự kiện sẽ nhận được những phần quà hấp dẫn đến từ ban tổ chức.
Mình tham gia sự kiện với loạt bài viết về cách tìm bug wordpress plugin. Bài viết được đúc kết từ quá trình tìm bug của mình và hy vọng rằng nó phần nào hữu ích với bạn đọc (những bạn muốn tìm bug mà chưa biết bắt đầu từ đâu và tiến hành như thế nào). Qua loạt bài này các bạn sẽ biết được cách nên bắt đầu từ đâu và tiến hành tìm bug như thế nào.
Loạt bài mình tạm thời chia làm 3 phần:
- Phần 1: Tìm hiểu wordpress, cài đặt môi trường, các chức năng cơ bản nên biết.
- Phần 2: Tìm hiểu plugin wordpress.
- Phần 3: Tìm lỗi SQL injection.
Wordpress là gì?
Những bài viết dạng trả lời câu hỏi này có rất nhiều trên mạng như:
- Tổng quan về wordpress
- Wordpress là gì và để làm gì
- Ưu và nhược điểm của wordpress
- So sánh với những CMS khác như Drupal, Joomla
Mình sẽ không nhắc lại lý thuyết về phần này nữa các bạn có thể lên google tìm đọc. Trong phần này mình chỉ nêu tổng quát sao cho các bạn chưa tiếp cận wordpress bao giờ có thể hiểu được.
Wordpress là một phần mềm quản trị nội dung (CMS) mã nguồn mở và được code bằng PHP. Wordpress cho phép người dùng quản trị website mà không cần biết code là gì. Người quản trị chỉ cần vào đó viết bài theo ý mình còn lại đã có wordpress lo.
Wordpress có cộng đồng sử dụng lớn nên các vấn đề gặp phải khi cài đặt và sử dụng sẽ được giải quyết một cách dễ dàng. Không chỉ vậy, wordpress có một kho các plugin khổng lồ với gần 60 nghìn plugin. Với số lượng lớn như vậy, nó có thể giải quyết hầu hết các vấn đề mà người quản trị gặp phải.
Cài đặt môi trường
Sau khi có cái nhìn tổng quan về wordpress giờ là lúc cài môi trường để tìm bug. Trong bài mình thực hiện cài đặt trên Ubuntu 20.04 LTS. Để bài viết có tính chính xác nhất mình đã tạo một server Ubuntu mới tinh trên Google Cloud. Khi tạo xong server mình SSH tới server và tiến hành cập nhật hệ thống.
sudo apt update -y
sudo apt upgrade -y
Sau khi cập nhật hệ thống xong mình bắt đầu cài các dịch vụ cho web server: Apache, MySQL, PHP.
Cài đặt Apache
Chạy lệnh sau để cài đặt apache
sudo apt install apache2 -y
Đợi quá trình cài đặt chạy xong mình truy cập vào địa chỉ IP server để kiểm tra apache đã chạy chưa.
Nếu kết quả hiện ra như hình trên là apache đã hoạt động bình thường.
Cài đặt MySQL
Cài đặt MySQL
sudo apt install mysql-server -y
Cài đặt bảo mật cho MySQL
sudo mysql_secure_installation
Cặt đặt độ mạnh mật khẩu cho MySQL
Chọn y để chọn mức độ mạnh của mật khẩu đăng nhập vào MySQL.
Tiếp đó là chọn mức độ mạnh của mật khẩu. Trong trường hợp này mình chọn độ mạnh ở mức thấp nhất (tức là 0).
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Sau khi chọn độ mạnh xong, hệ thống yêu cầu nhập mật khẩu cho root user.
Xóa bỏ tài khoản nặc danh Sau khi cài xác nhận mật khẩu cho root user. Hệ thống hỏi có muốn xóa tài khoản nặc danh không ta chọn y để xóa tất cả tài khoản nặc danh khỏi MySQL.
Từ chối tài khoản root đăng nhập remote
Xóa database test
Cập nhật quyền
Sau khi thực hiện các bước cài đặt trên cuối cùng là cập nhật lại quyền MySQL.
Kiểm tra MySQL Sau khi cài đặt thành công tiến hành kiểm tra xem MySQL có hoạt động bình thường không bằng cách truy cập vào MySQL thông qua terminal.
sudo mysql
Kết quả như trên hình là đã cài đặt thành công.
Thêm tài khoản MySQL
Thông thường mình không dùng tài khoản root để đăng nhập mà mình sẽ tạo thêm một tài khoản nữa và cấp quyền cho tài khoản này.
Thêm tài khoản MySQL
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin123123';
Gán quyền
GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost';
Cập nhật lại quyền
FLUSH PRIVILEGES;
Kết quả
Thêm database
Ta sẽ tạo thêm database để lát nữa cài wordpress.
create database wordpress;
Vậy là đã cài đặt xong MySQL.
Cài đặt PHP
Chạy lệnh dưới đề cài đặt các gói cần thiết.
sudo apt install php libapache2-mod-php php-mysql -y
Đợi đến khi cài đặt xong ta kiểm tra PHP.
php -v
Cài đặt Apache tải file .php trước
Sửa file dir.conf
sudo vim /etc/apache2/mods-enabled/dir.conf
Thêm index.php
vào file để được nội dung như dưới.
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Reload lại apache
sudo systemctl reload apache2
Tạo info.php
Trước tiên cần phải cài lại quyền sở hữu cho thư mục /var/wwww/html
.
sudo chown -R www-data:$USER /var/www/html/
Cấp lại quyền
sudo chmod -R 775 /var/www/html/
Tạo file info.php
echo '<?= phpinfo();?>' > /var/www/html/info.php
Kiểm tra kết quả
Sau khi tạo file info.php ta truy cập vào địa chỉ http://IP/info.php
nếu có kết quả như hình dưới là đã cài PHP thành công.
Cài đặt Wordpress
Sau khi cài các gói cần thiết biến server thông thường thành web server. Tiếp đến ta tải và cài đặt wordpress, công việc cài đặt này rất đơn giản.
Tải wordpress Để tải wordpress ta có thể truy cập vào https://wordpress.org/download/ và chọn bản mới nhất. Trên server của mình không có giao diện nên mình sẽ thực hiện tải bằng lệnh.
Di chuyển vào thư mục DocumentRoot.
cd /var/www/html
Nếu không biết DocumentRoot của mình ở đâu thì chạy lệnh.
cat /etc/apache2/sites-enabled/000-default.conf | grep DocumentRoot
Tải Wordpress bản mới nhất
wget https://wordpress.org/latest.zip
Giải nén
unzip latest.zip
nếu hệ thống báo không tìm thấy unzip
thì chạy lệnh dưới.
sudo apt install unzip -y
Chuyển tất cả file ra thư mục Root
rm -f index.html; mv wordpress/* .; rm -rf wordpress
Phân quyền cho thư mục
sudo chown -R www-data:$USER /var/www/html/; sudo chmod -R 775 /var/www/html/
Cài đặt wordpress
Để cho không phải nhớ địa chỉ IP mình sẽ sử dụng DNS local. Sửa file /etc/hosts
(file trên máy tính của mình không phải trên server).
sudo vim /etc/hosts
Thêm dòng vào file hosts
35.220.200.32 wordpress.lab
Truy cập vào http://wodpress.lab
sẽ hiện ra màn hình cài dặt.
Cấu hình database
Tại bước này ta điền thông tin database đã cài đặt ở trên.
Cấu hình Site
Bước này điền thông tin tùy ý, sau khi điền sau chọn nút Install WordPress.
Lưu ý: Mật khẩu wordpress mặc định là mật khẩu phức tạp. Nếu muốn mật khẩu không an toàn thì phải tích vào ô "Confirm use of weak password"
Sau khi cài đặt xong màn hình thông báo thành công sẽ hiện ra.
Giới thiệu tính năng
Để truy cập vào trang quản trị ta truy cập vào đường dẫn http://wordpress.lab/wp-login.php và đăng nhập với thông tin đã tạo ra ở bước cài đặt. Khi đăng nhập thành công màn hình quản trị của admin sẽ hiện ra.
Trong phần này mình sẽ không nêu toàn bộ tính năng mà chỉ tập trung vào các tính năng phục vụ cho quá trình tìm bug. Còn lại các bạn nên google tìm đọc thêm.
Các tính năng nên biết:
- Plugins: Thêm mới, kích hoạt, hủy plugin.
- User: Thêm mới, xóa, các vài trò của tài khoản.
- Post: Tạo mới, xóa, sửa.
Tính năng Plugins
Khi tìm bug trong wordpress plugin thì tính năng đầu tiên cần biết đó là plugins. Ta cần biết tìm cài đặt và sử dụng plugin thì mới có thể tìm bug trong plugin đó được.
Khi mới cài đặt wordpress mặc định sẽ có 2 plugin được cài theo nhưng chúng không được kích hoạt. Để thêm mới plugin ta chọn vào Add New và tìm kiếm plugin muốn cài đặt. Để cài đặt plugin nào đó ta chọn Instal Now.
Trong ví dụ này mình cài My Calendar
Sau khi cài xong ta active lên để plugin có thể hoạt động.
Tính năng User
Wordpress cho phép quản trị viên tạo nhiều tài khoản để quản trị trang web, với mỗi user có thể có các quyền khác nhau. Wordpress cung cấp 6 vai trò khác nhau.
- Super Administrator: Có quyền truy cập vào trang quản trị network và tất cả các tính năng khác.
- Administrator: Có quyền dùng tất cả các tính năng không có quyền truy cập vào network.
- Editor: Publish post và quản lý bài viết của các người dùng trong wordpress.
- Author: Publish post và quản lý bài biết của chính người này tạo ra.
- Contributor: Viết và quản lý bài viết của mình nhưng không được publish.
- Supscriber: Chỉ quản lý profille của chính họ.
Tính năng Post
Wordpress cho phép người dùng viết nội dung sau đó sẽ publish lên trang web.
Đến đây thì phần 1 cũng đã kết thúc. Mong rằng qua phần này các bạn mới hiểu được các tạo một web server, tạo database, cài đặt wordpress và dùng một số tính năng cơ bản.