在android内容提供商指南中,它说当从数据库中选择数据时,要不使用String mSelectionClause = "var = " + mUserInput
,因为如果mUserInput
是nothing; DROP TABLE *;
,那么整个表将被删除。
所以它建议这样:
String mSelectionClause = "var = ?";
String[] selectionArgs = {""};
selectionArgs[0] = mUserInput;
我没理解,所以如果mUserInput
的值是nothing; DROP TABLE *;
,那么它与String mSelectionClause = "var = nothing; DROP TABLE *;"
不会做同样的事情吗?
答案 0 :(得分:0)
查询中的问号不直接替换为值mUserInput
)!
数据库和/或执行(代码)库的内部机制,知道如何使提供的值安全,以防止SQL injections和其他恶意攻击。
注意:这种技术不是针对Android的,但是(或者至少应该)适用于所有编程语言/环境中的所有数据库。