我是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”,但根据我的理解,“会话”仅在我们使用基于密码的用户身份验证时才有用 - 这不是我应用的功能。任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
首先,您必须意识到,如果您没有任何保护并且只允许任何事情,那么人们将能够做任何事情,就像那样简单。据我了解,您不希望使用标准保护:即具有登录凭据的用户,并使用每个案例的防御性编程。
好的,那么一个部分解决方案是计算哈希:
您必须在PHP和移动应用程序中计算相同的确定性散列函数,最好是非常复杂的散列函数,将您自己的暗加密算法与md5,sha1,同步线程等混合使用。
如果您担心攻击者使用正确的哈希重复旧查询,您可以进行更复杂的握手:首先向客户端发送一个随机数,这将是要计算的哈希的一部分。或者基于日期时间,IP或其他内容的东西。
当然,如果攻击者对您的代码进行逆向工程,他可以找到哈希函数,但至少需要他一些工作。如果你想让他的工作更加努力,你可以模糊你客户的代码。
作为证词,我使用这种技术来对抗蹩脚的攻击者,这些服务不需要注册。除非攻击者是专业人士并且非常想要您的私人数据,否则它会起作用。