消毒数据库

bwo*_*gie 1 database security android input-sanitization

当使用php和mysql在网络上编码数据库时,你必须在将数据插入数据库之前清理数据,以确保有人不会逃避引号等.这在Android和MySQLite中是否必要?它会自动消毒吗?还是只是不必要?

小智 5

1)是的,无论平台如何,您需要清理来自不受信任来源的任何输入(来自用户,另一个系统,另一个应用程序等 - 任何未硬编码到您的应用程序中的内容).

2)是的,在访问SQLite数据库时(直接或通过内容提供商),您需要在Android中执行此操作.

3)在将SQL命令用于数据库之前对输入进行清理是必要的,但它无法阻止所有形式的SQL注入.防止这种情况的最佳策略是使用参数化查询,它允许数据库区分数据的意义和命令的意图,因此即使输入错误并且SQL命令出现在数据中也是如此,数据库知道将它们视为数据.在标准Java编码中,这涉及使用PreparedStatements.在SQLite/Android中,您需要使用compileStatement用数据占位符创建查询(从不受信任的输入派生的内容)并用于bindString设置这些占位符.

在优秀的OWASP SQL注入写入中有关于此的更多信息.