Kohana提到他们使用mysql_real_escape_string在其文档中消毒数据库输入。但是,在通过我输入的表格中品尝一些基本查询时,它们已进入数据库中。例如:

SELECT * FROM users WHERE username='admin' AND password='' OR ''=''

完全按照显示的方式输入MySQL数据。我期望看到:

SELECT * FROM users WHERE username=\'admin\' AND password=\'\' OR \'\'=\'\' 

我正在使用ORM库,而不是数据库,但我知道它们一起工作。另外,我正在使用内置输入库($ this-> Input-Post)从表单中收集数据。我没有更改与安全性有关的任何控制器或库。

我还没有梳理源代码,但是Kohana是否逃脱了字符串,然后在将其输入DB字段之前删除斜线?我有些确信就是这样,但是我想确定。

谢谢

有帮助吗?

解决方案

当您逃脱SQL查询时,您将逃脱文字数据,以便与SQL语法不冲突,以便将撇号不解释为字符串定界符。 MySQL可以存储未设计的撇号,而没有任何其他数据需要存储的情况,可以将其存储在TACT中。将数据存储在其逃脱的形式中是一个错误,这样您就必须在检索它后再次将其解开。

尽管我不熟悉Kohana,但您可以放心,如果您要求它存储查询,并且可以使您提供完全相同的查询,则可以正确处理您的输入。

其他提示

Kohana Orm会自动保护您免受SQL注入侵害。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top