您应该转义硬编码的URL吗?

时间:2021-04-21 作者:Sam

我正在为客户端编写一个非常简单的社交共享插件。我使用这两个功能在每篇文章的底部显示共享按钮:

<?php
/**
 * Social buttons
 */
function zss_share_buttons() {
?>
    <div class="zss">
        
        <div id="fb-root"></div>
        <script>
            (function(d, s, id) {
                var js, fjs = d.getElementsByTagName(s)[0];
                if (d.getElementById(id)) return;
                js = d.createElement(s); js.id = id;
                js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0";
                fjs.parentNode.insertBefore(js, fjs);
            }
            (document, \'script\', \'facebook-jssdk\'));
        </script>
        <div class="fb-share-button" data-href="<?php the_permalink(); ?>" data-layout="button_count" data-lazy="true"></div>
        
        <a href="https://twitter.com/share?url=<?php the_permalink(); ?>&amp;text=<?php echo urlencode( get_the_title() ); ?>" title="Share on Twitter" target="_blank" rel="nofollow noopener noreferrer" class="zss-button zss-button--twitter">Twitter</a>
        
        <a class="zss-button zss-button--linkedin" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=<?php the_permalink(); ?>" title="Share on LinkedIn" target="_blank" rel="nofollow noopener noreferrer">LinkedIn</a>
    
    </div>
<?php }

/**
 * Insert share button
 */ 
function zss_insert_share_buttons( $content ) {
    if ( is_single() && \'post\' == get_post_type() ) {
        ob_start();
        zss_share_buttons();
        $content .= ob_get_clean();
    }
    return $content;
}
add_filter( \'the_content\', \'zss_insert_share_buttons\' );
是否有必要使用esc_url()? 据我所知,如果URL没有通过admin进行输入,应该可以。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

不,不需要转义硬编码的值。

据我所知,如果URL没有通过admin输入,它应该可以。

不一定。需要说明更多潜在恶意(或只是意外损坏)输出的潜在来源,例如:

翻译

  • 查询字符串($\\u GET)
  • Cookies因此,通常应该转义大多数(如果不是全部)函数和变量的任何输出值。

  • 相关推荐

    Escaping Issues

    我有一些关于逃跑的问题。这些例子是我做不到的。Must I escape variables, if it is, how can I do it?例如:global $redux_demo;在此代码中:if ( class_exists( \'Redux\' ) ) { global $redux_demo; if ($redux_demo[\'button-set-single-archive-services\'] == 2) { get_templa