谨慎实现Content Providers

细节

Content Providers允许应用程序使用URI地址或关系数据库模型来共享数据。它们也可以通过URI来访问文件。

修复

Content Providers可以独立声明读写访问控制权。除非必要,否则不要提供Content Providers的写入权限。并且,确保权限设置正确,以免非授权应用程序恶意读取Content Provider实例。

限制访问操作所需的最低权限。例如,要与另一个应用程序分享一个即时消息,该应用将该消息发送给联系人,只能分享该单个消息,而不是所有即时消息。Content Providers中的Record级委托特性允许在不共享整个数据库的情况下共享特定的记录或文件。一旦外部应用程序返回到原始应用程序,该委托就结束了。

要像对待不受信任的输入一样对待传递给Content Providers的参数,不要将未经安全处理的参数直接放到SQL语句中使用。若没有正确过滤,SQL代码就会通过Content Providers发送请求。如果查询请求中中包含恶意SQL代码,会导致返回敏感数据或被攻击者控制。

基于传递文件名提供文件的Content Providers应确保过滤掉路径遍历问题。例如,如果攻击者要在请求中包含../../../file,则可能导致程序读取并返回攻击者在应用程序上下文中不应该访问到的的文件中的数据。另外,请注意,攻击者创建的符号链接可能具有相同的结果。

参考

results matching ""

    No results matching ""