1

我是一名 iOS 开发人员并开发了一个 Web 服务应用程序,该应用程序已在 App Store 上架了一年。现在我决定让这个应用程序跨平台可用——从 Android 开始,为此我聘请了一名 Android 开发人员。

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

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

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

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

任何帮助将不胜感激。

4

1 回答 1

1

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

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

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

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

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

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

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

于 2012-04-26T07:42:51.800 回答