如何处理移动应用程序开发中的“语义URL攻击”

时间:2012-04-26 07:27:14

标签: php android iphone security

我是iOS开发人员&开发了一个Web服务应用程序,已经在App Store上运行了一年。现在我决定让这个应用程序跨平台提供 - 从Android开始,我聘请了Android开发人员。

直到这次聘用,所有网络相关代码和&管理数据(PHP / MySQL / XML)由我独自提起 - 所以我并不担心安全问题。但是现在,除了另外一个开发人员之外,我还有以下问题:

应用程序发送POST请求,其中包括要获取的行数 - 然后PHP脚本从MySQL获取许多行。以格式良好的XML返回它们。我担心的是,现在员工也会知道整个过程和过程。虽然他不能直接访问PHP脚本或MySQL数据库,但他仍然可以通过多种方式滥用它。例如,他可以在Web浏览器上创建一个URL,其中包含10万行的POST请求 - 这将使他拥有XML中的所有数据。

应该采取什么措施来解决这个问题? (是的,我可以在上述特定情况下强制强制限制40,但这不是理想的或通用的解决方案。)

顺便说一下,我对这个话题进行了广泛的谷歌研究。根据我的理解,上述问题称为"Semantic URL attack"。但我无法找到合适的解决方案。建议使用“Sessions”,但根据我的理解,“会话”仅在我们使用基于密码的用户身份验证时才有用 - 这不是我应用的功能。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

首先,您必须意识到,如果您没有任何保护并且只允许任何事情,那么人们将能够做任何事情,就像那样简单。据我了解,您不希望使用标准保护:即具有登录凭据的用户,并使用每个案例的防御性编程。

好的,那么一个部分解决方案是计算哈希:

  • 您想使用参数P
  • 查询服务器
  • 你计算H =哈希(P)
  • 你发送?p = P& h = H到服务器
  • 你的服务器收到?p = P& h = H并计算H'= hash(P)
  • 如果H'!= H,则服务器拒绝回答

您必须在PHP和移动应用程序中计算相同的确定性散列函数,最好是非常复杂的散列函数,将您自己的暗加密算法与md5,sha1,同步线程等混合使用。

如果您担心攻击者使用正确的哈希重复旧查询,您可以进行更复杂的握手:首先向客户端发送一个随机数,这将是要计算的哈希的一部分。或者基于日期时间,IP或其他内容的东西。

当然,如果攻击者对您的代码进行逆向工程,他可以找到哈希函数,但至少需要他一些工作。如果你想让他的工作更加努力,你可以模糊你客户的代码。

作为证词,我使用这种技术来对抗蹩脚的攻击者,这些服务不需要注册。除非攻击者是专业人士并且非常想要您的私人数据,否则它会起作用。