$atts 是用户输入,如何在 WordPress 中清理和转义

问题描述 投票:0回答:1

我在 WordPress 中创建了一个短代码。简码代码如下:

function wp_test_shortcode($atts){
    $atts = shortcode_atts(array(
        'id'    =>  'TESTTEST',
        'thumb' =>  ''
    ),$atts);

    $thumb = $atts['thumb'] ? $atts['thumb'] : 'https://i3.ytimg.com/vi/'.$atts['id'].'/0.jpg';

    return '<div data-id="'.$atts['id'].'" data-thumb="'.$thumb.'" ></div>';
}
add_shortcode('test','wp_test_shortcode');

现在我的问题是,由于 $atts 是用户输入,如何清理和转义。

wordpress security plugins shortcode sanitize
1个回答
1
投票

假设具有 WordPress 贡献者角色的人是这里的坏演员,Monzur Alam 是对的 - 你必须清理属性。

function wp_test_shortcode($atts){
    $atts = shortcode_atts(array(
        'id'    =>  'TESTTEST',
        'thumb' =>  ''
    ),$atts);
    
    // Sanitize Inputs
    
    $id = sanitize_text_field($atts['id']);
    $thumb = sanitize_text_field($atts['thumb']);
    
    $thumb = $thumb ? $thumb : 'https://i3.ytimg.com/vi/'.$atts['id'].'/0.jpg';

    // Escape Outputs
    
    return '<div data-id="'.esc_attr($id)).'" data-thumb="'.esc_url($thumb).'" ></div>';
} 

add_shortcode('test','wp_test_shortcode');
© www.soinside.com 2019 - 2024. All rights reserved.