Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery html属性与html?_Javascript_Jquery_Attributes_Sanitization - Fatal编程技术网

Javascript jQuery html属性与html?

Javascript jQuery html属性与html?,javascript,jquery,attributes,sanitization,Javascript,Jquery,Attributes,Sanitization,我使用jQuery来确保我的用户不能通过我的聊天应用程序执行javascript。这就是我如何将从WebSocket服务器获取的数据附加到用户的方式: obj = JSON.parse(e.data); $("<li>", { class: "list-group-item", text: obj.username + ": " + obj.message }).prependTo('#chatlog'); obj=JSON.par

我使用jQuery来确保我的用户不能通过我的聊天应用程序执行javascript。这就是我如何将从WebSocket服务器获取的数据附加到用户的方式:

obj = JSON.parse(e.data);

    $("<li>", {
        class: "list-group-item",
        text: obj.username + ": " + obj.message
    }).prependTo('#chatlog');
obj=JSON.parse(e.data);
$(“
  • ”{ 类:“列表组项目”, 文本:obj.username+“:”+obj.message }).prependTo(“#chatlog”);

  • 这非常有效,似乎可以躲过所有XSS攻击,但这是我的问题。我想把
    obj.username
    改成粗体,但我不知道该怎么做,因为
    text:
    之后的所有内容都变成了文本。非常高兴在这方面得到任何帮助

    使用span wrapped元素设置HTML内容,您可以使用临时元素转换文本

    const escape = txt => $('<div/>').text(txt).html()    
    
    $("<li>", {
      class: "list-group-item",
      html: '<span style="font-weight:bold">' + escape(obj.username) + "</span>: " + escape(obj.message)
    }).prependTo('#chatlog');
    
    const escape=txt=>$('').text(txt.html()
    $(“
  • ”{ 类:“列表组项目”, html:“”+转义(obj.username)+“:”+转义(obj.message) }).prependTo(“#chatlog”);
  • const obj={
    用户名:“John Doe”,
    信息:“嗨!djsjdk”
    };
    const escape=txt=>$('').text(txt.html();
    控制台日志(转义(对象消息));
    $(“
  • ”{ 类:“列表组项目”, html:“”+转义(obj.username)+“:”+转义(obj.message) }).prependTo(“#chatlog”)
    
    
    然后您可以使用另一种方式:-

    $("<li>", {
      class: "list-group-item",
    }).append($('<span>', {
      class: 'font-weight-bold',
      text: obj.username
    })).append($('<span>', {
      text: `: ${obj.message}`
    })).prependTo('#chatlog');
    
    $(“
  • ”{ 类:“列表组项目”, }).附加($(''){ 类:“字体粗体”, 文本:obj.username })).附加($(''){ 文本:`:${obj.message}` })).prependTo(“#chatlog”);
  • 请参见下面的代码段:-

    const obj={
    用户名:“John Doe”,
    留言:“嗨!”
    };
    $(“
  • ”{ 类:“列表组项目”, }).附加($(''){ 类:“字体粗体”, 文本:obj.username })).附加($(''){ 文本:`:${obj.message}` })).prependTo(“#chatlog”)
    
    
      粗体部分起作用,但这使得通过obj.message编写脚本成为可能!您可以在li中创建两个span,并使用textWorks分别在两个span中传递值,但如果obj.message包含javascript,则允许使用XSS。我需要做的是使obj.message文本,但我想obj.username必须是HTML才能加粗