Kohana 2.3.4 ORM SQL注入保护
-
10-10-2019 - |
题
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注入侵害。
不隶属于 StackOverflow