javascript XSS清理如果数据已经使用PHP进行了清理


javascript XSS sanitizing if data is already sanitized using PHP

更新:

我仍然像以前一样困惑。有人能回复我的最后一条评论吗

如果我的所有数据(本例中为+title1+和+title2+,请参见下文(都使用PHP进行了清理,我还需要担心javascript吗?我担心我在下面的代码中使用title="+title2+"(撇号是我担心的(。

html''javascript:

 <div id="verification"></div>
 <script>

function update() {
    $.ajax({
    url: 'update.php', //php          
    data: "", 
    dataType: 'json',   
    success: function (data) {
        //on receive of reply
        var title1 = data[0];
        var title2 = data[1];          
        $('#verification').html("<img src=images/test"+title1+".gif title='"+title2+"'></img>");     //output to html
        }
    });
}
</script>

json响应

["1","test test test"]

输出(通过带标题的鼠标悬停文本(

test test test

php(省略php清理(

$result = mysql_query("SELECT title1, title2 FROM users WHERE username = '$foobar'")
or die(mysql_error());
$array = mysql_fetch_row($result);
echo json_encode($array);

需要考虑两个不同的元素:

  • 数据库:使用准备好的语句(PDO或mysqli(来避免通过用户输入注入SQL
  • UI:根据需要对用户输入进行转义,以避免XSS攻击

虽然通过PDO/mysqli准备的语句对数据库进行查询的用户输入是">santizied",但在浏览器中将用户输入显示回网页之前,需要进一步考虑。