【问题标题】:Input parameter sanitization in android for avoiding vulnerabilitiesandroid中的输入参数清理以避免漏洞
【发布时间】:2018-07-17 05:14:59
【问题描述】:

最近,虽然我的 android 应用程序审计员的源代码审计提出了一些问题,如路径操纵、隐私侵犯攻击?

从最近几天开始,我一直在寻找合适的解决方案,但找不到任何富有成效的解决方案。请为我提供以下查询的解决方案。

1. File f = new File("filepath");

如何防止攻击者操纵文件路径?

2. private void selectDataFromDB(String param1,String param2){
  sqlitedatabase.query("Select * from tbl1 where col1 LIKE ? and colu2 LIKE   ?",new String[]{param1,param2});
}

如何验证参数以使攻击者无法更改此参数? 输入消毒 ?如何申请?

编辑1:

MyActivity.java 中的方法selectDataFromDB() 错误处理机密信息,这可能会损害用户隐私并且通常是非法的。

【问题讨论】:

  • 我认为你需要问更清楚的问题。虽然 select * 在数据库上有点糟糕(您应该请求列名),但只要您使用绑定变量(就像您一样),SQL 语句就可以了。您可能应该添加一个空检查,可能是对空字符串的检查(除非您认为所有内容都匹配),但 SQL 没问题。
  • 非常感谢@GabeSechan。在调用此类方法之前,我已经检查了参数是否为 null,但审计人员认为它不合适。请帮我摆脱它。我已经更新了我的问题。
  • 然后问问你是审计员有什么问题。因为我没有看到任何合适的东西。如果您实际上是在与审核员交谈,他们会告诉您原因是什么。但是那里没有sql注入的风险。根据您的编辑,我最好的猜测是您使用 * 请求的信息太多,而他们希望您请求的信息更少。
  • 他们建议我应用输入清理。我检查了多个链接,但找不到任何东西。在 php 中有一个默认函数可以检查特殊字符,但在 android 中没有。

标签: android sql-injection privacy input-sanitization path-manipulation


【解决方案1】:

他们建议我应用输入清理。

当您使用查询参数时,您不需要清理输入。这是使用参数化 SQL 语句的最佳理由之一。查询参数的值不可能更改 SQL 语法。

您的审核员可能不理解how SQL injection works

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多