HTTP身份validation的类型以及如何设计安全数据库?
几个月前,我在一个iOS(iphone)应用程序上工作,该应用程序允许用户创建某些类型的事件并将它们作为XML / JSON文件发布到Web服务器。 然后通过他们的设备,他们能够查看来自不同用户的事件等。
构建整个事物的想法非常基本。 当应用程序第一次启动时,应用程序连接到URL并询问用户ID(这对每个用户都是唯一的)。 然后,每次用户想要发布内容时,我们都使用HTTP基本身份validation,并将用户ID和XML文件作为标头发送,其中包含有关所创建事件的所有信息。 我从来没有在服务器端工作过,所以我不知道整个系统有多安全。
几天前我开始研究我的应用程序,这是同样的想法,所以我首先开始在服务器端(php)工作。 在我开始之前,我想看看我之前的项目是多么安全,我很震惊,没有任何安全措施。 只需使用一个简单的Web调试器(嗅探器),我就可以看到我的应用程序连接到哪里询问用户ID,每个xml文件的forms如何发送到数据库以及服务器如何应答。
因此,如果有人想要用一百万个用户ID或一百万个事件来淹没数据库,那么创建一个php脚本就可以非常容易。 在这种情况下,我们使用HTTP基本认证。
我现在的问题是,我应该使用什么样的身份validation,以便在服务器和用户(XML)之间交换什么样的文件是不可见的,我如何设计注册机制,以便有人不能创建一百万个ID用一个简单的脚本。
我不想构建一个超级安全的应用程序,但至少有一些基本类型的安全性。 因为我是php的新手,你可以给我一些链接来检查我应该使用哪些安全机制,甚至更好的一些教程。 此外,如果你在使用什么样的安全性之前开发了类似的东西,你会建议什么?
只需使用一个简单的Web调试器(嗅探器),我就可以看到我的应用程序连接到哪里询问用户ID,每个xml文件的forms如何发送到数据库以及服务器如何应答。
使用SSL来防止中间人攻击。
因此,如果有人想要用一百万个用户ID或一百万个事件来淹没数据库,那么创建一个php脚本就可以非常容易。
这就是网络通信的本质。 使用启发式方法来限制不需要的数据量。 一些例子:
- 单个user_id每秒最多可以创建一个事件。
- 让客户端签署user_id请求并validation服务器上的签名。
这些并不是防止滥用的可靠方法,但没有完全的安全性。 但是,建议的方法将阻止大多数脚本小子。
“我应该使用什么样的身份validation,以便在服务器和用户(XML)之间交换什么样的文件是不可见的”
对此唯一“真实”的答案是安装ssl证书,然后使用https协议