由于存在SQL注入,为什么SQL数据库仍然使用脚本语言

时间:2014-02-19 16:27:14

标签: sql security web sql-injection

我的意思是,如果我们使用一些基于二进制的语言,我们会阻止SQL注入吗?

1 个答案:

答案 0 :(得分:-1)

正在使用的语言不是问题。

问题是使用来自不受信任来源的数据构建S​​QL语句。

如果它是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注入的答案是:不使用外部数据构建S​​QL语句