我的node.js服务器期望从未经过身份验证的(不受信任的)客户端接收字符串化的JSON对象。
服务器使用JSON.parse来处理数据。 是否可以在来自websocket的JOSN数据中注入“威胁和操纵”命令?
是否有任何安全预防措施需要考虑?
在javascript解析中是否有像“htmlspecialchars()在php中”的东西?
服务器:
wsBoss = new WSServer(portboss);
wsBoss.on('connection', function (socket) {
console.log('connected to boss');
socket.on('message', function (msg) {
console.log(JSON.parse(msg).topGeo[0]);
var msgsms="HI";
socket.send(msgsms);
});
客户端:
var data={"topGeo":topGeo,
"bottomGeo":bottomGeo,
"concLoad":concLoad}
console.log(topGeo,bottomGeo,depth,generalLoad,concLoad,intervLoad,mode,joistType,units);
websocket.send(JSON.stringify(data));
答案 0 :(得分:0)
JSON.parse
本身被认为可以保护其用户免受eval
等旧方式的恶意攻击 - 使用JSON将其字符串值转换为对象。但是,它仍然很重要,它无法保护程序的作者免受处理接收对象的代码中的意外安全问题。但是,从这个意义上说,从JSON对象反序列化与“普通”代码创建的对象没有什么不同。此外,由于不时会发现问题,因此没有JavaScript解释器具有绝对的安全性,因此存在某些人在V8的JSON.parse
实现中发现安全问题的风险。话虽如此,定制的自编解析算法不太可能比部署到数百万次安装的经过验证的开源算法更安全。
答案 1 :(得分:0)
以下是一些建议: