Bảo mật wordpress đang là chủ đề cộng động WordPress quan tâm nhất trong thời gian qua. Quy mô và sức ảnh hưởng của tin tặc ngày càng lớn. Đứng trước thách trên chúng ta cần cùng càng ngày càng phát triển để có thể chống lại nó. Bài viết này mình muốn chia đến các bạn thủ thuật “Bảo mật WordPress phương thức GET”
Phương thức GET trong WordPress là gì ?
Phương thức GET là phương thức gửi dữ liệu thông qua đường dẫn URL nằm trên thanh địa chỉ của Thanh trình duyệt. Server sẽ nhận đường dẫn đó và phân tích trả về kết quả cho bạn. Server sẽ phân tích tất cả những thông tin đằng sau dấu hỏi (?) chính là phần dữ liệu mà Client gửi lên.
Tại sao cần bảo mật phương thức GET ?
Khác với phương POST , dữ liệu gửi lên Server thông qua đường dẫn URL và mọi giá trị đều được xuất hiện ở đó. Nếu kẻ xấu lợi dụng nó và Truy cập liên tục URL chứa dữ liệu đó thì sẽ như thế nào?
Ví dụ : Tích hợp thanh toán ngân hàng Bảo Kim. Sau khi thanh toán xong Bảo Kim sẽ gửi cho chúng 1 đoạn mã BPN thông qua phương thức GET như sau :
abc.com/?created_on=1287729470&customer_address=Dia+Chi+Khach+Hang&customer_email=khoinm%40 baokim.vn&customer_name=ten+ban&customer_phone=84987654321&fee_amount=100 0&merchant_address=Dia+Chi+Cong+Ty&merchant_email=hangntt%40baokim.vn&merchant_id=8& merchant_name=Nguyen+Thi+Thu+Hang&merchant_phone=84981234567&net_amount=99000&ord er_id=100139&payment_type=2&total_amount=100000.00&transaction_id=2506B4F7E6E6C&transac tion_status=4&resend=true&verify_sign=2IsQX54QVnYrU2wpsaWJCusC1veXr0vu2auZ451trdoA6
Từ đó chúng nhận dữ liệu và check thông tin cho người nạp . Nếu kẻ xấu bắt được chuỗi đó và fake mã none thì dữ liệu vẫn sẽ được gửi lên Server.
Phương pháp bảo mật phương thức GET trong WordPress
Thật may ,hệ thống WordPress đã tính toán đến vấn đề đó và cung cấp chúng ta một function là wp_nonce_field() . Việc của chúng ta là khai báo nó tại Form nhập dữ liệu và ràng buộc điều ở phần xử lý dữ liệu.
Mình sẽ viết 1 đoạn code nhập họ tên đơn giản gửi lên Server có sử dụng wp_nonce_field() cho các bạn dễ hiểu hơn cách thức hoạt động của nó.
<form action="/xuly.php" name="form" method="get">
<label> Họ và tên <label>
<input type=text name='txtHovaten'>
<input type="submit">
<?php wp_nonce_field( 'submit_name' ); ?> </form>
Thật đơn giản vậy phải không nào chỉ cần đặt wp_nonce_field() trong form nhập liệu và truyền trong hàm 1 giá trị.
<?php
$nonce = $_REQUEST['_wpnonce'];
if ( ! wp_verify_nonce( $nonce, 'submit_name' ) ) {
echo die();
}
if ( is_user_logged_in() && isset( $_REQUEST['txtHovaten'] ) ) {
// Xử lý dữ liệu
}
?>?>
Vậy nếu fake Nonce có được không ? Câu trả lời là không wp_nonce_field cũng giống như Season 1 mã tương đương với 1 phiên làm việc.