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是否会在将字符串转入数据库字段之前将字符串转义然后删除斜杠?我有点确信这是事实,但我想确定。
由于
答案 0 :(得分:3)
当您转义SQL查询时,您将转义文字数据,以便它不会与SQL语法冲突,例如,因此撇号不会被解释为字符串分隔符。 MySQL可以存储未转义的撇号和其他任何其他内容,而不需要存储数据以及逃避。将数据存储在其转义形式中是错误的,因此您必须在检索数据后再次将其取消。
虽然我对Kohana不熟悉,但如果您要求它存储查询并且它会给您完全相同的查询,您可以放心,它正在正确处理您的输入。
答案 1 :(得分:2)
Kohana ORM会自动保护您免受SQL注入。