Add_Query_Arg()XSS漏洞

时间:2015-04-24 作者:testermaster

我已经创建了一个个人插件,现在我担心这个漏洞:https://blog.sucuri.net/2015/04/security-advisory-xss-vulnerability-affecting-multiple-wordpress-plugins.html

这就是我如何使用add\\u query\\u arg()。这是好的还是我应该以某种方式保护它?

general\\u插件。php

function add_custom_query_var( $vars ){
  $vars[] = "custom_var";
  return $vars;
}
add_filter( \'query_vars\', \'add_custom_query_var\' );
plugin\\u part1。php

...
echo \'<a href="https://www.example.com/page/?custom_var=\'.$db_table->db_column.\'">text</a>....\'
...
plugin\\u part1-已修复。php

...
echo \'<a href="https://www.example.com/page/\'.add_query_arg( "custom_var", $db_table->db_column).\'">text</a>....\'
...
plugin\\u part2。php

$id = intval(get_query_var( \'custom_var\' ));
$sql = $mydb->prepare(
        "
        SELECT * 
        FROM `db_table` 
        WHERE `db_table`.`db_column` = %d
        ", 
        array($is)
);

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

除非我错过了眼前的东西,否则你不会用add_query_arg()remove_query_arg(); 由于这些是受此特定漏洞影响的唯一功能,因此您应该是安全的。

您的代码使用query_vars 过滤器和get_query_var() 但这两者都不受您引用的漏洞的影响。

否则,您的代码看起来不错,我确实在“plugin\\u part2.php”的倒数第二行中看到了一个拼写错误,应该是array($id). 如果没有看到上下文中的其余内容,我不能说你是百分之百安全的,但你发布的任何内容都不容易受到你所问的漏洞的攻击。

对于任何无意中发现此帖子的人,此漏洞的修复方法如下所示,任何情况下:

add_query_arg($param1, $param2, $old_query_or_uri);

remove_query_arg($key, $query);
应替换为

esc_url(add_query_arg($param1, $param2, $old_query_or_uri));

esc_url(remove_query_arg($key, $query));
分别为。

有关此漏洞的精彩报道,请访问this article.

结束