0

我有 2 个关于 php 安全性的问题,

第一:
是否可以通过sql注入上传文件?(访问 load_file 和 INTO FILE 被拒绝)

第二:
在PDO中我需要使用PDO::quote方法,这种方法注射安全吗?

这是一个例子:

$check = "SELECT * FROM table_name WHERE username = ". $database->quote($this->username);
4

3 回答 3

0

是否可以使用 sql 注入上传文件?(访问 load_file 和 INTO FILE 被拒绝)

如果所有的 MySQL 文件 i/o 功能都被禁用,那么一般来说不,不可能仅通过 SQL 注入漏洞上传文件。如果在其他地方有一些其他代码与 SQLi 结合最终允许攻击者“上传文件”,则仍有可能。

在 PDO 中我需要使用引用方法,这种方法对注入安全吗?

只要字符集配置正确,那么PDO::quote就被认为是安全的。正如其他人所指出的那样,Prepared Statement是首选。

于 2013-07-05T11:02:43.103 回答
0

是否可以使用 sql 注入上传文件?

这个网站是为开发者准备的,而不是我相信的欺诈者。作为开发人员,我根本不关心任何注入变体。即使这种特殊的注射是不可能的——各种各样的其他注射也会让你面临同样的危险。

开发人员唯一应该知道的是如何正确格式化他的查询。其他的都是无用的垃圾。所以,如何格式化一个SQL查询,如何正确无条件地进行格式化,确实是开发者应该知道的。
但无论哪种注射类型都不关他的事。

开发人员在注入时唯一需要知道的是,格式不正确的查询文字可能会被利用。

在 PDO 中我需要使用引用方法

不,在 PDO 中,您需要使用准备好的语句。

这种方法注射安全吗?

尽管您提供的示例非常安全(对于传统编码),但这种方法很容易出错,并且可能让您很容易陷入注入。只要格式化工具是可转让的——它仍然有很高的风险被移出查询大楼并最终丢失或被不当使用。

准备好的语句的好处是它可以无条件地正确格式化。

于 2013-07-05T11:08:47.637 回答
-1

第一:是否可以通过sql注入上传文件?(访问 load_file 和 INTO FILE 被拒绝)

是的,总是可以上传这样的文件,但是如果您在将它们以任何格式放入 db 之前检查并转义存储的文件,则取决于您。

第二:在PDO中我需要使用quote方法,这种方法注入安全吗?

在 PDO 中避免 SQL 注入的最好方法是使用准备好的语句

检查这个主题,它很好地涵盖了主题

当您将参数绑定到查询时,您可以指定它的类型,例如PDO::PARAM_STRor PDO::PARAM_INT。这将进行适当的转义,并且您将更安全地抵御 SQL INJECTION

于 2013-07-05T10:42:39.720 回答