Thứ Bảy, 17 tháng 10, 2020

Các cách bảo mật cho website Wordpress

Có nhiều bạn nói rằng Wordpress dễ bị hack... Thực ra ý kiến này chưa thực sự chính xác. Thường website Wordpress dễ bị hack khi chúng ta sử dụng theme/plugin bẩn hoặc do chúng ta chưa thực hiện các bước bảo mật cơ bản cho file code. Dưới đây là bài tổng hợp các cách cơ bản để bảo mật cho website Wordpress. Dù đó không phải là cách bảo mật tuyệt đối nhưng phần nào có thể giúp bạn chống lại cuộc tấn công của những hacker non trẻ.

Cách 1: CHMOD an toàn cho website

CHMOD là một trong bước bảo mật website PHP nói chung và WordPress nói riêng rất tốt để hạn chế các vụ tấn công trực tiếp nhằm vào mã nguồn của website như đọc các thông tin nhạy cảm, tạo thêm các tập tin trong thư mục.

- CHMOD an toàn cho tập tin PHP: CHMOD chuẩn cho toàn bộ tệp tin PHP  trên mã nguồn Wordpress là 644 để website có thể hoạt động bình thường. Riêng tệp tin nhạy cảm như wp-config.php.htaccess thì nên CHMOD thành 400 hoặc 600 (nên dùng 600 là được rồi).

- CHMOD an toàn cho thư mục: CHMOD chuẩn dành cho các thư mục để website Wordpress hoạt động tốt là 755. Để an toàn hơn nữa bạn có thể CHMOD 2 thư mục wp-admin và wp-include là 700. Tuy nhiên nếu là 700 thì khi cần cập nhật phiên bản wordpress mới thì bạn phải thao tác thủ công bởi vì nó không thể ghi đè các tệp tin vào.

Cách 2: Giấu kỹ file config

Hacker vẫn có thể tìm ra dù bạn có giấu kỹ file config, tuy nhiên việc giấu file wp-config.php đi cũng hạn chế phần nào sự tấn công từ các hacker mới vào nghề.

Thông thường file config sẽ có đường dẫn là : .../public_html/wp-config.php do đó chúng ta có thể giấu nó đi bằng cách copy file config ra ngoài thư mục public_html, có thể tạo 1 thư mục "/bao_mat/" ngang cấp với /public_html/ và bỏ file wp-config.php vào đó. Cuối cùng ta sửa lại nội dung file config đang nằm trong thư mục /puclic_html thành như sau

01
02
03
04
<php
  if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');
  require_once(ABSPATH . '../bao_mat/wp-config.php');

Cách 3: Hạn chế tấn công thông qua đăng nhập

Cách mà hacker rất hay sử dụng đó là tấn công thông qua trang đăng nhập. Để hạn chế được khả năng tấn công này chúng ta cần đảm bảo được các vấn đề sau:

- Tên đăng nhập khó đoán ra.
- Mật khẩu dài, mạnh, có ký tự đặc biệt và không liên quan đến các thông tin cá nhân.
- Hạn chế số lần đăng nhập sai.
- Bảo mật đường dẫn đăng nhập.
- Thường xuyên thay đổi mật khẩu.

Chúng ta có thể sử dụng plugin Better WP Security để thực hiện ẩn đường dẫn đăng nhập và hạn chế số lần đăng nhập sai. Hoặc có thể sử dụng thêm plugin Login Security Solution -Plugin này giúp chặn các IP xấu hay các truy vấn kiểu brute force có trong dữ liệu của riêng họ.

Đó là những cách cơ bản mà bạn có thể dễ dàng thực hiện giúp bảo mật cho website Wordpress, hạn chế phần nào tấn công từ hacker.

Thứ Năm, 15 tháng 10, 2020

Chỉnh sửa tabs trang chi tiết sản phẩm custom product tabs

Giao diện trang sản phẩm của website Wordpress sử dụng plugin Woocommerce khá đầy đủ và tối ưu cho cả người dùng lẫn quản trị web. Nhưng đôi khi product tabs của woocommerce chưa "thỏa mãn" yêu cầu sử dụng của chúng ta và chúng ta muốn thay đổi chúng: đổi tên tabs thông tin sản phẩm, xóa tabs, thay đổi vị trí tabs product, thêm mới tab... Bài chia sẻ này chúng tôi nói về chỉnh sửa tabs trang chi tiết sản phẩm (custom product tabs)

Lưu ý: Bạn cần thêm mã dưới đây vào tập tin function.php của child themes, để khi update themes cha thì mã không bị xóa mất khỏi themes.

Xóa các tabs

Sử dụng đoạn mã sau để xóa các tabs cụ thể. Removing product tabs

01
02
03
04
05
06
07
08
09
10
11
// Remove product data tabs
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );
 
function woo_remove_product_tabs( $tabs ) {
 
    unset( $tabs['description'] );          // Remove the description tab
    unset( $tabs['reviews'] );          // Remove the reviews tab
    unset( $tabs['additional_information'] );   // Remove the additional information tab
 
    return $tabs;
}

Đổi tên tabs

Sử dụng đoạn mã sau để đổi tên các tab. Renaming product tabs

01
02
03
04
05
06
07
08
09
10
11
// Rename product data tabs
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );
function woo_rename_tabs( $tabs ) {
 
    $tabs['description']['title'] = __( 'More Information' );       // Rename the description tab
    $tabs['reviews']['title'] = __( 'Ratings' );                // Rename the reviews tab
    $tabs['additional_information']['title'] = __( 'Product Data' );    // Rename the additional information tab
 
    return $tabs;
 
}

Sắp xếp lại các tabs

Sử dụng đoạn mã sau để thay đổi thứ tự tab. Re-ordering product tabs

01
02
03
04
05
06
07
08
09
10
// Reorder product data tabs
add_filter( 'woocommerce_product_tabs', 'woo_reorder_tabs', 98 );
function woo_reorder_tabs( $tabs ) {
 
    $tabs['reviews']['priority'] = 5;           // Reviews first
    $tabs['description']['priority'] = 10;          // Description second
    $tabs['additional_information']['priority'] = 15;   // Additional information third
 
    return $tabs;
}

Tùy chỉnh một tab

Đoạn mã sau sẽ thay thế tab mô tả bằng chức năng tùy chỉnh. Customize a product tabs

01
02
03
04
05
06
07
08
09
10
11
12
13
// Customize product data tabs
add_filter( 'woocommerce_product_tabs', 'woo_custom_description_tab', 98 );
function woo_custom_description_tab( $tabs ) {
 
    $tabs['description']['callback'] = 'woo_custom_description_tab_content';    // Custom description callback
 
    return $tabs;
}
 
function woo_custom_description_tab_content() {
    echo '<h2>Custom Description</h2>';
    echo '<p>Here\'s a custom description</p>';
}

Thêm một tab tùy chỉnh

Sử dụng đoạn mã sau để thêm tabs sản phẩm toàn cầu tùy chỉnh. Add a custom product tabs

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Add a custom product data tab
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
     
    // Adds the new tab
     
    $tabs['test_tab'] = array(
        'title'     => __( 'New Product Tab', 'woocommerce' ),
        'priority'  => 50,
        'callback'  => 'woo_new_product_tab_content'
    );
 
    return $tabs;
 
}
function woo_new_product_tab_content() {
 
    // The new tab content
 
    echo '<h2>New Product Tab</h2>';
    echo '<p>Here\'s your new product tab.</p>';
     
}

Đổi tên tabs thông tin bổ sung

Tabs “Additional Information” chỉ hiển thị nếu sản phẩm có trọng lượng, kích thước hoặc thuộc tính.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
// Rename the additional information tabs
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );
 
function woo_rename_tabs( $tabs ) {
 
    global $product;
     
    if( $product->has_attributes() || $product->has_dimensions() || $product->has_weight() ) { // Check if product has attributes, dimensions or weight
        $tabs['additional_information']['title'] = __( 'Product Data' );   
    }
  
    return $tabs;
  
}