我在一个插件中有一个函数,它可以用程序创建帖子。它使用heredoc为post创建html,并插入分配给变量的plugins_url()
。
这种方法是否会造成可利用的漏洞?如果是这样的话,这将如何运作——黑客必须做什么才能利用它?
我在文件的顶部有if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
。
我的功能如下:
function ra_add_post() {
$prev_post = get_page_by_title( 'Tile Puzzle',
'OBJECT',
'post' );
if ( $prev_post->post_status == false || $prev_post->post_status == 'trash' ):
$plugins_url = plugins_url();
$html = <<<_HERE
<div class="flex-container">
<div class="board"></div>
</div>
<audio id="audio" src="$plugins_url/tile-puzzle/Success-sound-effect.mp3"></audio>
_HERE;
endif;
$new_post = array(
'post_title' => 'Tile Puzzle',
'post_content' => $html,
'post_status' => 'publish'
);
wp_insert_post( $new_post );
}
register_activation_hook( __FILE__,
'ra_add_post' );
这应该不是问题。查看wp_insert_post()
文档。它自动通过sanitize_post()
运行数据,这足以对其进行消毒
此外,plugins_url()
只是一种将正确的URL方案返回到插件(或MU插件(文件夹的奇特方法,它并没有真正做任何危险的事情(如果plugins_url
过滤器做了任何不好的事情,你会遇到更大的问题,哈哈(
如果你用用户提供的数据创建帖子,你真的只需要担心什么,但使用wp_insert_post()
可以处理99.9%的问题,即使这样。
使用Heredoc也与此没有太大关系。Heredoc基本上只是HTML块的一种语法风格。它真的不比一个";"问题";(或缺少(而不是使用双引号字符串或CCD_ 8。