Ormlite转义字符串方法?

Posted

技术标签:

【中文标题】Ormlite转义字符串方法?【英文标题】:Ormlite escape string method? 【发布时间】:2011-06-19 05:38:04 【问题描述】:

android 版 Ormlite 是否有本地转义字符串的方法?

例如,如果我想提供一个字符串:ormlite's escape func,它需要作为 ormlite\'s escape func 提供。

TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats)
    .prepare())

我尝试使用 UpdateBuilder 的 escapeValue 方法,但它只进行了以下更改: 'ormlite 的转义函数'。它在语句的开头和结尾添加单引号。是否有原生支持转义字符串以保证 sql 注入安全?

如果没有,有什么方法可以做到?

谢谢!

【问题讨论】:

like()-Method 中的第一个字符串可能是潜在的注入安全漏洞吗? 【参考方案1】:

我尝试使用 UpdateBuilder 的 escapeValue 方法,但它只进行了以下更改:'ormlite's escape func'。它在语句的开头和结尾添加单引号。是否有原生支持转义字符串以保证 sql 注入安全?

这是一个常见问题解答。执行此操作的正确方法是使用 SelectArg 参数,以便 SQL 可以使用 ?构造类型。这是另一个question talking about this。

SelectArg selectArg = new SelectArg(stats);
TestDao.queryForFirst(
    TestDao.queryBuilder().where().like("stats", selectArg).prepare());

这是select-arg functionality 上的文档。

编辑:

正如@Moritz 指出的那样,如果您实际上是在更新数据库,您还可以将SelectArgUpdateBuilder 一起使用:

SelectArg arg = new SelectArg("Some value");
updateBuilder.updateColumnValue(MY_COLUMN, arg);

【讨论】:

顺便说一句,这也适用于更新语句:SelectArg arg = new SelectArg(); arg.setValue("Some value"); updateBuilder.updateColumnValue(MY_COLUMN, arg);

以上是关于Ormlite转义字符串方法?的主要内容,如果未能解决你的问题,请参考以下文章

Sed命令中含有转义字符的解决方法

python基础:内置函数、方法、转义字符大全

htmljavascripturl特殊字符的转义诠释及使用方法详解

jquery特殊字符转义方法

iOS:转义网址链接中的特殊字符问题

DOS特殊字符转义方法