当在某人的iPhone和云端的远程数据库之间保存数据时,我总是采取有关SQL注入攻击的预防措施。
但是,当只是将数据(使用sqlite)从某人的手机保存到仅在他们自己的手机上的数据库时,是否还需要这样做?
他们能做的更糟糕的是什么?在自己的手机上删除自己的数据(或表格)? (如果他们真的努力了。)
感谢。
答案 0 :(得分:2)
是否有必要? - 是的,它是“必要的”,即它可能是值得的。即使你不关心这种情况下的安全性(这可能是有效的),你应该担心正确性(至少,它的骄傲)。
可能发生的最糟糕的事情是什么?
Patty O'Brian
将她的名字输入到一个字段中,该字段会编写SQL调用并且失败。该程序要么处理得不好,要么用户收到关于失败原因的模糊错误消息。无论哪种方式,现在用户都会联系支持并吃掉时间和精力(用户#2从不承认他们做了什么,使调试更加困难)和/或要求他们退款。
答案 1 :(得分:1)
是的,有必要,恕我直言。
通过遵守正确性,可以防止大多数注射攻击
例如,SQL占位符和绑定变量处理意外形成的输入(例如"5 o'clock"
中的无辜撇号)和恶意输入(例如"' OR 1=1 --"
)。
因此,在数据处理方面要严格正确,不要担心大多数注射。
注射可能会破坏应用程序逻辑 我认为SQLite有触发器,但无论如何,应用程序可能会根据从本地数据库中提取的数据做出决策,攻击环境的其他方面等等。如果今天的应用程序不够复杂,那么明天的转换将是。
其他人可能正在使用(攻击)手机,而不仅仅是授权用户 确实,这是通用风险,例如,对StackOverflow进行身份验证的桌面。但是,我发现“智能手机”应用程序更容易受到意外操作员的影响:许多手机没有密码,许多应用程序不需要频繁的重新验证,用户可以自由地将手机交给需要快速拨打电话的人。
答案 2 :(得分:0)
如果要将iPhone数据库与远程数据库同步,请不要信任该内容。它不需要SQL注入来更改数据库。越狱的iPhone为用户提供了对包含sqlite数据库文件的整个文件系统的完全访问权限,然后可以根据攻击者的需要对其进行修改。这不是sql注入,这是一个“客户端信任”漏洞。
sqlite下的SQL注入对攻击者很有用。与MySQL不同,Sqlite允许您堆叠查询,因此无论查询受sql注入影响,攻击者都可以创建/删除/插入/更新/删除/选择/ etc。在MySQL下,它通常用于注入子选择或联合选择以获取特定数据,但是例如在正常条件下你不能将select语句转换为插入。