活跃 Android 是否容易受到 SQL 注射。任何已知的解决方案?

Active Android is it prone to SQL injections. Any known solution?

Android 应用程序已使用 ActiveAndroid

开发
public static List<ModelNames> search(String pattern) {
    return new Select().from(ModelNames.class)
            .where("title LIKE '%" + pattern + "%' or content LIKE '%" + pattern + "%'")
            .orderBy("title")
            .execute();
}

现在很容易 SQL 注射。

有没有人遇到过类似的问题并找到了解决方案,或者谁能提供相同的解决方案?

github 上发现了一个问题,但无法找到合适的解决方案。

我所做的是假设,用户输入的所有内容都是威胁,所以我会将所有内容保存到像 usUsername 这样的变量中,其中 "us" 表示不安全。之后,我检查每个 "us" 变量进行注入,结果是 sUsername(s 表示安全)。因此,当我构建查询时,我只能使用 s-varaibles,并且在大多数情况下应该是安全的。

这个想法完全取自这里:http://www.joelonsoftware.com/articles/Wrong.html

这里已经提到了 question

我找到了一个解决方法,但我让其他人在尊重 ActiveAndroid ORM 方面提出更好的建议。

解决方法如下:

public static List<ModelNames> search(String pattern) {
    return new Select().from(ModelNames.class)
             String pattern = DatabaseUtils.sqlEscapeString(searchBar.getText().toString());
             pattern = pattern.substring(1, pattern.length());
             pattern = pattern.substring(0, pattern.length()-1);
            .where("title LIKE '%" + pattern + "%' or content LIKE '%" + pattern + "%'")
            .orderBy("title")
            .execute();
}

参考:sqlEscapeString

examples on the website 显示如何使用占位符:

public static List<ModelNames> search(String pattern) {
    pattern = "%" + pattern + "%";
    return new Select().from(ModelNames.class)
        .where("title LIKE ? or content LIKE ?", pattern, pattern)
        .orderBy("title")
        .execute();
}