在自己的iPhone上防止sqlite注入攻击?

时间:2010-04-15 21:26:15

标签: sql iphone security sqlite sql-injection

当在某人的iPhone和云端的远程数据库之间保存数据时,我总是采取有关SQL注入攻击的预防措施。

但是,当只是将数据(使用sqlite)从某人的手机保存到仅在他们自己的手机上的数据库时,是否还需要这样做?

他们能做的更糟糕的是什么?在自己的手机上删除自己的数据(或表格)? (如果他们真的努力了。)

感谢。

3 个答案:

答案 0 :(得分:2)

  • 是否有必要? - 是的,它是“必要的”,即它可能是值得的。即使你不关心这种情况下的安全性(这可能是有效的),你应该担心正确性(至少,它的骄傲)。

  • 可能发生的最糟糕的事情是什么?

    • 用户#1 Patty O'Brian将她的名字输入到一个字段中,该字段会编写SQL调用并且失败。该程序要么处理得不好,要么用户收到关于失败原因的模糊错误消息。
    • 用户#2输入一个用于编写SQL调用的名称,并且成功!该计划目前处于未知状态。

    无论哪种方式,现在用户都会联系支持并吃掉时间和精力(用户#2从不承认他们做了什么,使调试更加困难)和/或要求他们退款

答案 1 :(得分:1)

是的,有必要,恕我直言。

  1. 通过遵守正确性,可以防止大多数注射攻击 例如,SQL占位符和绑定变量处理意外形成的输入(例如"5 o'clock"中的无辜撇号)和恶意输入(例如"' OR 1=1 --")。 因此,在数据处理方面要严格正确,不要担心大多数注射。

  2. 注射可能会破坏应用程序逻辑 我认为SQLite有触发器,但无论如何,应用程序可能会根据从本地数据库中提取的数据做出决策,攻击环境的其他方面等等。如果今天的应用程序不够复杂,那么明天的转换将是。

  3. 其他人可能正在使用(攻击)手机,而不仅仅是授权用户 确实,这是通用风险,例如,对StackOverflow进行身份验证的桌面。但是,我发现“智能手机”应用程序更容易受到意外操作员的影响:许多手机没有密码,许多应用程序不需要频繁的重新验证,用户可以自由地将手机交给需要快速拨打电话的人。

答案 2 :(得分:0)

如果要将iPhone数据库与远程数据库同步,请不要信任该内容。它不需要SQL注入来更改数据库。越狱的iPhone为用户提供了对包含sqlite数据库文件的整个文件系统的完全访问权限,然后可以根据攻击者的需要对其进行修改。这不是sql注入,这是一个“客户端信任”漏洞。

sqlite下的SQL注入对攻击者很有用。与MySQL不同,Sqlite允许您堆叠查询,因此无论查询受sql注入影响,攻击者都可以创建/删除/插入/更新/删除/选择/ etc。在MySQL下,它通常用于注入子选择或联合选择以获取特定数据,但是例如在正常条件下你不能将select语句转换为插入。