没有直接用户输入的SQL注入

时间:2014-03-27 15:15:13

标签: sql security sql-injection

为了防止我的网站使用SQL注入,我使用了预准备语句。

现在让我说我在我的代码中使用某个地方,这是一个简单的SQL查询:

    SELECT  DATA FROM DATABLE;

此代码是否容易注射?好吧,在我看来,这是不可能的,因为没有用户输入。但我只是想确定。

2 个答案:

答案 0 :(得分:5)

如果你的陈述是固定的(没有外部参数),那么它就不会受到注射。

因此,如果您的代码看起来像这样:

result = RunQuery("SELECT * FROM Table")

然后您就安全了,因为查询始终每次都 ,并且不会受到用户的影响。

答案 1 :(得分:0)

只有在查询中使用变量时才能进行注入。

如果您使用params的预备语句,则无法使用。

select * from user where id = ?

您无法更改此查询,只能更改该值,在这种情况下,您将无法获得任何结果

如果您使用

select * from user where id = '$id'

现在取决于$ id的值,我们可以有一个sql注入。 如果$ id为“0”或id> 0“,您将全部登录;)