活跃 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();
}
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();
}
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();
}
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();
}