【问题标题】:Sanitizing sqlite statements清理 sqlite 语句
【发布时间】:2014-07-11 00:16:28
【问题描述】:

我有一个应用程序允许用户创建数据库并使用它们。

我想允许他们在这些数据库上执行任意 sql 语句。本质上,该应用程序将获取带有 EditText 的 sql 语句并将其扔到数据库中。

我应该限制这些陈述吗?如果有,怎么做?

我应该使用什么形式的合理消毒?

【问题讨论】:

  • 这取决于您希望用户允许执行多少操作。 “玩”是什么意思?
  • 用户应该能够一路走下去,破坏他们的数据库,但不会让应用程序崩溃。

标签: android sqlite escaping sanitization


【解决方案1】:

SQLite 最危险的部分是 load_extension function,但默认情况下它是禁用的(在 Android 上,即使你想启用它也无法启用)。

使用ATTACH DATABASE statement,可以打开进程可以访问的任何其他数据库文件(在 Android 上,这些文件仅限于属于您自己的应用程序的文件),或创建新的数据库文件。

否则,可能发生的最坏情况是数据库占用过多的内存、存储空间或 CPU。 所有这些都受到 Android 系统的保护。

总而言之,您无需做任何事情。

【讨论】:

  • 没想到ATTACH。谢谢。我会禁用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多