2011-10-14 104 views
2

Kohana prepared statement documentation它规定Kohana的SQL预处理语句安全

尽管所有的参数都逃出来防止SQL注入,但它仍然是一个好主意,以验证/净化你的输入。

从我在准备好的声明中读到的内容,我的印象是绑定参数阻止了SQL注入。如果情况并非如此,那么在绑定变量之前应该使用什么消毒/转义方法?

回答

1

我认为当他们说“这仍然是一个好主意来验证/ sanitize”,他们的意思是使用有效的类或/和验证类...为了确保你得到正确的数据插入你的数据库。在Kohana中的验证

更多信息:http://kohanaframework.org/3.2/guide/kohana/security/validation

UPDATE:

你也应该看看XSS:http://kohanaframework.org/3.2/guide/kohana/security/xss

+0

同意,例如,如果您插入一个整数并且您收到一个文本字符串,会发生什么情况。你最终可能会在数据库中产生一个0而不是你期待的结果。 – bumperbox

+1

所以,为了清楚起见,它说这不是出于安全考虑的原因,只是为了确保您期望的数据类型进入查询? – flurry

+0

实际上,如果将错误的数据添加到您的数据库中,它可能会成为一个安全问题(例如,可以在数据库中插入脚本,可能会在您的应用程序的某处和某处执行该脚本)。它也可能导致错误。 – jnbdz

1

的Kohana提供了一个数据库抽象到不同的数据库类型。并不是所有的具体数据库都可能已经准备好了语句,因此它们将被模拟。某些特定数据库的本地转义功能甚至可能被破坏。

正如你永远不知道,不仅有一层安全性总是好的。

另一层是你的脚本实际上接收到有意义的数据。例如。例如,一个名字大小为8兆字节的字符串。无论数据库在做什么,都无济于事。