Android 清理数据库

Android 清理数据库,android,database,security,input-sanitization,Android,Database,Security,Input Sanitization,当使用php和mysql在web上对数据库进行编码时,您必须在将数据插入数据库之前对其进行清理,以确保有人不会转义引号等。这在Android和MySQLite中是必要的吗?它会自动消毒吗?或者只是没有必要 这同样适用于这里,也适用于其他任何地方,包括互联网 有一件事你必须非常小心,那就是你对内容提供商的输入。人们通常编写内容提供商,然后使用它们允许其他人与他们的应用程序交互。然而,ContentProvider通常在幕后充当数据库的接口。这是一个你绝对需要小心的地方,特别是如果你允许手机上的其他

当使用php和mysql在web上对数据库进行编码时,您必须在将数据插入数据库之前对其进行清理,以确保有人不会转义引号等。这在Android和MySQLite中是必要的吗?它会自动消毒吗?或者只是没有必要

这同样适用于这里,也适用于其他任何地方,包括互联网

有一件事你必须非常小心,那就是你对内容提供商的输入。人们通常编写内容提供商,然后使用它们允许其他人与他们的应用程序交互。然而,ContentProvider通常在幕后充当数据库的接口。这是一个你绝对需要小心的地方,特别是如果你允许手机上的其他应用访问你的应用程序内容提供商

是的,在用户可能输入数据的任何其他地方,您也需要小心。这包括可编辑文本字段、从internet下载的内容,基本上包括任何您不信任的内容

有一个做污染分析的项目,TaintDroid,但它只作为一个系统形式存在,也就是说,它基于运行时修改工作,而不是在所有系统上都可用。然而,目前也有一些研究项目正在进行,旨在跟踪哪些数据流流向何处,这可以帮助您防止这个问题。Scandroid[1]就是其中的一个

[1] ScanRoid:Android应用程序的自动安全认证,
www.cs.umd.edu/~avik/papers/scandroidascaa.pdf

这一点在这里和其他任何地方都同样适用,包括互联网

有一件事你必须非常小心,那就是你对内容提供商的输入。人们通常编写内容提供商,然后使用它们允许其他人与他们的应用程序交互。然而,ContentProvider通常在幕后充当数据库的接口。这是一个你绝对需要小心的地方,特别是如果你允许手机上的其他应用访问你的应用程序内容提供商

是的,在用户可能输入数据的任何其他地方,您也需要小心。这包括可编辑文本字段、从internet下载的内容,基本上包括任何您不信任的内容

有一个做污染分析的项目,TaintDroid,但它只作为一个系统形式存在,也就是说,它基于运行时修改工作,而不是在所有系统上都可用。然而,目前也有一些研究项目正在进行,旨在跟踪哪些数据流流向何处,这可以帮助您防止这个问题。Scandroid[1]就是其中的一个

[1] ScanRoid:Android应用程序的自动安全认证,
www.cs.umd.edu/~avik/papers/scandroidascaa.pdf

1是的,在不考虑平台的情况下,您需要清理来自用户、另一个系统、另一个应用程序等不可信来源的任何输入-任何未硬编码到您的应用程序中的内容

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

3在SQL命令中将输入用于数据库之前,有必要对输入进行清理,但这不能阻止所有形式的SQL注入。防止这种情况发生的最佳策略是使用参数化查询,这使数据库能够区分哪些是数据,哪些是命令,因此即使有错误的输入潜入,并且SQL命令出现在数据中,数据库也知道如何将其视为数据。在标准Java编码中,这涉及到PreparedStatements的使用。在SQLite/Android中,您需要使用compileStatement创建带有占位符的查询,这些占位符是从不受信任的输入中派生出来的数据,并使用bindString设置这些占位符


关于这方面的更多信息,请参阅优秀的书面材料。

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

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

3在SQL命令中将输入用于数据库之前,有必要对输入进行清理,但这不能阻止所有形式的SQL注入。防止这种情况发生的最佳策略是使用参数化查询,这使数据库能够区分哪些是数据,哪些是命令,因此即使有错误的输入潜入,并且SQL命令出现在数据中,数据库也知道如何将其视为数据。在标准Java编码中,这涉及到PreparedStatements的使用。在SQLite/Android中,您需要使用compileStatement创建带有占位符的查询,这些占位符是从不受信任的输入中派生出来的数据,并使用bindString设置这些占位符


更多关于这方面的信息,请参阅精彩的文章。

哈哈,是的,对不起。楼上的话:嘿,我正要去接电话
ASE;:请提供错误清理的示例,以及您对自动清理的期望。例如,如果用户输入引号,是否需要转义\引号\etc.哈哈是的,对不起。楼上的单词混乱:嘿,我正要去接DROP数据库;:请提供错误清理的示例,以及您对自动清理的期望。例如,如果用户输入引号,是否需要转义\quotes\等。请您指导如何清理数据?根据您在SQLite/Android中的回答,您需要使用compileStatement为来自不可信输入的数据创建带有占位符的查询,并使用bindString设置这些占位符。在使用内容提供商方法删除、查询、更新等时是否需要此选项?请您指导如何清理数据?根据您在SQLite/Android中的回答,您需要使用compileStatement为来自不可信输入的数据创建带有占位符的查询,并使用bindString设置这些占位符。在使用内容提供商方法删除、查询、更新等时是否需要?