【问题标题】:Prevent XSS in javascript on data received by ajax在 ajax 接收的数据上防止 javascript 中的 XSS
【发布时间】:2018-03-31 16:29:08
【问题描述】:

我从数据库接收数据并使用 jQuery ajax 将结果添加到 HTML 元素,如下所示:

$.ajax({
    url: "getDatabaseData.php",
    type: "post",
    dataType: "json",
    success: function(response){
        $("#message-div").html(response[0].user_input_message);
    }
});

这里是从数据库中获取和返回数据的getDatabaseData.php:

$messages = $CFG_DB->select("SELECT user_input_message FROM messages");
echo json_encode($messages);

想象一下,如果 user_input_message 包含以下文本:

<script>XSS Attack code goes here</script>

我的问题是:

  1. 这样做会不会出现 XSS 问题?
  2. 如果出现问题,我该如何预防?

没有 ajax,当使用 PHP 打印数据时,我只是使用 htmlentities 来防止 XSS,但我没有看到任何类似的 javascript。

【问题讨论】:

    标签: javascript ajax xss


    【解决方案1】:

    使用 PHP 打印数据时,我只是使用 htmlentities 来防止 XSS

    相当于使用text(),而不是html()

    【讨论】:

    • 所以如果我使用 text() 而不是 html() 那么我是安全的,那太棒了!但是,大多数时候我都有一些 html 代码应该同时添加,例如:$("#message-div").html("
      消息是:" + response[0]。 user_input_message + "
      ");那该怎么办呢?
    • 我在之前的评论中创建了一个关于我的问题的新帖子。知道答案的欢迎回复,谢谢:stackoverflow.com/questions/49590792/prevent-xss-in-jquery-html
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2017-08-25
    • 2012-10-28
    相关资源
    最近更新 更多