-2

几个月前,我开发了一个 iOS(iphone) 应用程序,该应用程序允许用户创建某些类型的事件并将它们作为 XML/JSON 文件发布到 Web 服务器。然后通过他们的设备,他们能够查看来自不同用户的事件等。

构建整个事物的想法非常基本。当应用程序第一次启动时,应用程序连接到一个 URL 并要求提供一个用户 ID(每个用户都是唯一的)。然后每次用户想要发布内容时,我们使用 HTTP 基本身份验证并将用户 ID 和包含有关创建的事件的所有信息的 XML 文件作为标头发送。我从来没有在服务器端工作过,所以我不知道整个系统有多安全。

几天前我开始研究我的应用程序,这是相同的想法,所以我首先开始在服务器端(php)工作。在我开始之前,我想看看我以前的项目有多安全,我很震惊没有任何安全措施。只需使用一个简单的 Web 调试器(嗅探器),我就能够看到我的应用程序连接到何处以请求用户 ID,每个 xml 文件的格式如何发送到数据库以及服务器如何响应。

因此,如果有人只想用一百万个用户 ID 或一百万个事件来淹没数据库,那么创建一个 php 脚本来做到这一点将非常容易。在这种情况下,我们使用 HTTP 基本身份验证。

我现在的问题是,我应该使用什么样的身份验证,所以服务器和用户(XML)之间交换什么样的文件是不可见的,以及我如何设计注册机制以便有人无法创建一百万个 id用一个简单的脚本。

我不想构建一个超级安全的应用程序,但至少要有某种基本的安全性。由于我对 php 非常陌生,您可以给我一些链接来检查我应该使用哪些安全机制,甚至可以提供一些更好的教程。另外,如果您在使用哪种安全性之前开发了类似的东西,您会提出什么建议?

4

2 回答 2

4

“我应该使用什么样的身份验证,所以服务器和用户之间交换什么样的文件(XML)是不可见的”

唯一“真正”的答案是安装ssl证书,然后使用https协议

于 2013-01-20T20:47:56.807 回答
1

只需使用一个简单的 Web 调试器(嗅探器),我就能够看到我的应用程序连接到何处以请求用户 ID,每个 xml 文件的格式如何发送到数据库以及服务器如何响应。

使用 SSL 防止中间人攻击。

因此,如果有人只想用一百万个用户 ID 或一百万个事件来淹没数据库,那么创建一个 php 脚本来做到这一点将非常容易。

这就是网络通信的本质。使用启发式方法来限制不需要的数据量。一些例子:

  1. 单个 user_id 每秒最多可以创建一个事件。
  2. 让客户端对 user_id 的请求进行签名,并在服务器上验证签名。

这些不是防止滥用的万无一失的方法,但没有绝对的安全性。不过,建议的方法将阻止大多数脚本小子。

于 2013-01-20T21:02:08.800 回答