这种技术如何防止恶意输入?

时间:2012-11-10 22:22:39

标签: android provider

在android内容提供商指南中,它说当从数据库中选择数据时,要不使用String mSelectionClause = "var = " + mUserInput,因为如果mUserInputnothing; DROP TABLE *;,那么整个表将被删除。

所以它建议这样:

String mSelectionClause = "var = ?";
String[] selectionArgs = {""};
selectionArgs[0] = mUserInput;

我没理解,所以如果mUserInput的值是nothing; DROP TABLE *;,那么它与String mSelectionClause = "var = nothing; DROP TABLE *;"不会做同样的事情吗?

1 个答案:

答案 0 :(得分:0)

查询中的问号直接替换为值mUserInput)!

数据库和/或执行(代码)库的内部机制,知道如何使提供的值安全,以防止SQL injections和其他恶意攻击。

注意:这种技术不是针对Android的,但是(或者至少应该)适用于所有编程语言/环境中的所有数据库。