Javascript 从WebSocket解析JSON字符串有风险吗?

Javascript 从WebSocket解析JSON字符串有风险吗?,javascript,json,security,websocket,xss,Javascript,Json,Security,Websocket,Xss,我正在编写一个Angular2 web应用程序,我希望与服务器进行双向通信,因此最好的解决方案是使用WebSocket Mozilla fundation使用JSON.stringify(msg)解析表示JSON消息的字符串,用于使用websocket发送和接收数据。这就引出了一些关于注射的想法。例如,假设以下JSON文档从服务器传输到客户机: { message{ from: "paul", text:"hello!", date:"01/01/2017" }

我正在编写一个Angular2 web应用程序,我希望与服务器进行双向通信,因此最好的解决方案是使用WebSocket

Mozilla fundation使用
JSON.stringify(msg)
解析表示JSON消息的字符串,用于使用websocket发送和接收数据。这就引出了一些关于注射的想法。例如,假设以下JSON文档从服务器传输到客户机:

{
  message{
    from: "paul",
    text:"hello!",
    date:"01/01/2017"
  }
}
现在假设paul将他的名字改为“paul\”,并发送以下文本:

,text: alert('xss'),something:"
那么客户端接收到的以下JSON将是:

{
  message{
    from: "paul\",
    text:",text: alert('xss'),something:"",
    date:"01/01/2017"
  }
}
这实际上是以下JSON(刚刚重新排列):

这可能会导致问题,我想这取决于使用这个JSON做了什么。有什么方法可以防止这些事情发生,或者JSON.stringfy技术是安全的,因为当从JSON向DOM中插入数据时,文本属性将是未定义的,因为alert('xss')不是字符串(或者不返回任何内容)


另外,如果调用alert()之类的函数没有问题,我们可以将
something
变量设置为我们想要的任何值,这肯定是有风险的。

JSON不能包含函数,所以它是安全的-您断言客户端接收的JSON可以包含
text:alert('xss')
erroneous@JaromandaX好啊但是忽略警报,并确认我能够通过注入设置something属性也
忽略警报
。。。好的,如果JSON不能包含函数,那么问题是什么呢。。。您使用了
alert
作为示例函数,我也这样做了。。。JSON规范不是
它可以包含除alert之外的任何函数
它是
它不能包含任何函数
,如果它被插入到DOM中
-为什么要“将JSON插入DOM”。。。JSON与DOM@Gatonito-你的
代码会这样做-所以不要写愚蠢的代码:p
{
  message{
    from: "paul\",text:",
    text: alert('xss'),
    something:"",
    date:"01/01/2017"
  }
}