我遇到了一些获得用户提供的字符串的node.js代码,调用JSON.stringify(str)
并将值直接注入到SQL语句中。
e.g。
var x = JSON.stringify(UNSAFE_USER_STRING);
mysql_execute('UPDATE foo SET v = ' + x + ' WHERE id = 1');
显然这是滥用JSON.stringify,但这不是我的代码,作者希望在修补之前看到攻击媒介。因为UNSAFE_USER_STRING是一个字符串,而不是一个对象,并且明显"
和\
的转义,如果出现严重问题则不明显
这段代码安全吗?如果没有,有人可以证明什么是不安全的输入吗?
谢谢!
答案 0 :(得分:1)
如果您确定x是一个字符串,那么我99%肯定这使得无法进行SQL注入攻击。当你不确定x的类型时,我的信心降到90%。也就是说,考虑到以下所有因素不应构成漏洞:
答案 1 :(得分:-1)
即使像“正在被转义这样的字符。用于评论的字符(组合),如 - 或#仍然可能导致WHERE子句被忽略。