可以注入SELECT语句吗?

时间:2013-02-23 20:04:02

标签: php sql sql-injection

我正在重新编码我网站上的所有sql语句以使用PDO和预处理语句。我已经尽力了解SQL注入的工作方式,所以我有一个问题。

如果我有一个页面说viewitems.php,该页面将查询数据库并从表中提取所有数据并在页面上显示所有数据。由于用户没有任何输入可以注入吗?我知道可以注入使用数据向下钻取标题变量的页面,因为用户可以搞乱标题但是如果SQL被编码到页面中而不需要任何外部变量可以注入吗?

2 个答案:

答案 0 :(得分:3)

  

我正在重新编码我网站上的所有sql语句以使用PDO和预处理语句。

<强>布拉沃。

  

由于用户没有任何输入可以注入吗?如果SQL被编码到页面中而不需要任何外部变量可以注入吗?

如果SQL语句中没有运行时变量,那么该语句不易受SQL注入攻击。在这种情况下使用准备好的陈述仍然没有坏处。由于多种原因,这样做甚至可能是有益的:

  • 与需要使用预准备语句的其他代码(为安全起见)保持一致
  • 针对if /何时需要参数的未来验证
  • 查询缓存(虽然这取决于您的特定数据库和/或驱动程序;请参阅12

答案 1 :(得分:0)

  

可以注入SELECT语句吗?

YES
总的来说。

但是,如果SQL被编码到没有变量的页面中,当然不能注入,因为没有什么可注入的。

但是,如果将SQL编码到注入了一些变量的页面中,尽管“非外部”,则可以进行二次注入。
这就是为什么准备好的语句如果一直使用就可以做任何好事,没有例外。