我的意思是,如果我们使用一些基于二进制的语言,我们会阻止SQL注入吗?
答案 0 :(得分:-1)
正在使用的语言不是问题。
问题是使用来自不受信任来源的数据构建SQL语句。
如果它是PHP:
并不重要$sql = "SELECT * FROM users WHERE id = '$id'";
或者如果它在C:
sprintf( sql, "SELECT * FROM users WHERE id = '%s'", id );
在这两种情况下,如果id
或$id
变量是来自外部数据源的不可信输入,则正在构建的SQL受到污染。在任何一种情况下,如果攻击者通过id
'; drop table users;
,那么您正在构建:
SELECT * FROM users WHERE id = ''; drop table users;
避免SQL注入的答案是:不使用外部数据构建SQL语句。