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


How to handle "Semantic URL attacks" in mobile application development

我是一名iOS开发人员,开发了一款网络服务应用程序,该应用程序已经在App Store上线了一年。现在我决定让这个应用程序跨平台可用 - 从Android开始,我聘请了一位Android开发人员。

在这次招聘之前,所有与Web相关的代码和数据(PHP/MySQL/XML)都由我一个人管理和获取 - 所以我不太担心安全性。但是现在,随着另一个开发人员的加入,我有以下担忧:

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

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

顺便说一句,我对这个主题进行了广泛的谷歌研究,据我所知,上述问题被称为"语义URL攻击"。但是我无法找到正确的解决方案。建议使用"会话",但根据我的理解,"会话"仅在我们具有基于密码的用户身份验证时才有用 - 这不是我的应用程序的功能。

任何帮助将不胜感激。

首先,你必须意识到,如果你没有保护并允许任何事情,人们将能够做任何事情,就这么简单。因此,据我了解,您不想使用标准保护:即用户拥有登录凭据,并使用按案例进行防御性编程。

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

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

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

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

当然,如果攻击者对你的代码进行逆向工程,他可以找到哈希函数,但这至少需要他做一些工作。如果你想让他的工作更难,你可以混淆客户的代码。

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