【发布时间】:2015-07-22 02:47:39
【问题描述】:
我遇到了一些 node.js 代码,它获取用户提供的字符串,调用 JSON.stringify(str) 并将值直接注入 SQL 语句。
例如
var x = JSON.stringify(UNSAFE_USER_STRING);
mysql_execute('UPDATE foo SET v = ' + x + ' WHERE id = 1');
显然这是对 JSON.stringify 的滥用,但这不是我的代码,作者希望在修补之前查看攻击向量。因为 UNSAFE_USER_STRING 是一个字符串,而不是一个对象,并且会转义明显的 " 和 \,所以如果存在严重问题并不明显
这段代码安全吗?如果没有,有人可以证明什么是不安全的输入吗?
谢谢!
【问题讨论】:
-
Preventing SQL injection in Node.js。使用准备好的语句。
-
以上cmets,请在评论前至少阅读问题标题。如果您阅读了整个问题,将获得奖励。
-
不发送UTF8编码怎么办? stackoverflow.com/questions/12456762/…(不过,一个 PHP 问题。它应该与 node.js 不同吗?)
标签: mysql json node.js sql-injection