gpt4 book ai didi

android - SQLiteDatabase.query 是否使用 PreparedStatements ?

转载 作者:行者123 更新时间:2023-11-30 00:12:17 25 4
gpt4 key购买 nike

当我在 Android 中使用用户输入查询我的数据库时,我通常使用 SQliteDatabase.query , 正确使用 SelectionArgs。

Cursor cursor = db.query(UserEntity.TABLE,
new String[]{UserEntity.COLUMN_ID, UserEntity.COLUMN_USERNAME, UserEntity.COLUMN_FIRSTNAME,UserEntity.COLUMN_LASTNAME,...},
UserEntity.COLUMN_USERNAME + "=?",
new String[]{username},
null, null, null);

是否足以防止 SQL 注入(inject)?或者我应该先使用 PreparedStatements 吗?

最佳答案

使用准备语句的建议来自 PHP,其中一些旧的 API 不允许 SQL 参数(),除非使用准备语句。

但是参数和prepared statements是正交的概念。为了防止注入(inject)(并避免字符串/blob 格式问题),您只需要参数。 (query() 给了你。)

准备好的语句只有在您想多次执行时才有用。

(碰巧的是,query() 确实在内部使用了准备好的语句,但这是 SQLite API 的结果,与您无关。)

关于android - SQLiteDatabase.query 是否使用 PreparedStatements ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47964468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com