使web服务安全的最佳方法是什么?


What is the best way of making webservice secure

上周我一直在阅读/谷歌搜索解决这个问题/应用程序的最佳方法。

我有一个应用程序,基本上是一个数据库前端,目前它存储数据在本地,所有工作愉快(可在应用程序商店)。

我接下来要做的是将这些数据存储在服务器上。

(在此之前,我没有任何服务器经验,所以从这一点开始,从我自己的研究和假设,如果有什么是不正确的,请指出给我)。

我决定RESTful web服务设计将是我想要的最好的。基本意图是iPad/Android将能够与web服务对话,web服务位于MySQL数据库之上,web服务将接收字符串,视频,照片。

我目前的情况是我可以得到webservice与MySQL数据库交谈,我可以从iPad发送简单的请求数据(字符串)和发布数据(字符串),(仍然需要找出处理照片和视频的最佳方式,但这是一个不同的问题)。

我的问题:什么是使这个web服务登录/安全的最好方法。

数据很敏感,所以必须要安全。目前,用户在没有用户名的情况下无法访问该应用程序。密码,但显然我也需要在web服务中采取预防措施。

我已经做了大量的谷歌研究,甚至在这里的主题,我似乎经常看到评论"这个方法已经过时了"等。

似乎有两种基本的方法,1)基本上有一个在初始启动时配置的GUID <-我认为2)在每次请求数据时也传输密码/用户名。

任何帮助指导将不胜感激。

感谢

注:不好意思,那篇文章

  • 可以对服务器和客户端之间交换的数据进行加密和签名。为此,您可以免费生成自己的可信证书。您必须根据您正在使用的技术寻找方法。这将保护您免受中间人攻击,因为入侵者无法读取或更改数据。

  • 您在代码中使用的任何密码都应该加密,以防止反向工程(至少对于业余爱好者)

  • 使用基于密钥的加密算法

  • 捕获所有异常,错误不应该被传输到客户端,因为它是通往系统的大门。

  • 保护您的wsdl文件(如果您有的话)不被公众查看。

  • 验证您的表单,用户不应该能够注入特殊字符,如"<",">","'","=","-"…

    这是我现在能想到的

您可以使用以下方法使您的API安全。

  • oAuth实现发送和接收带有认证头的数据。

  • SSL证书,以确保服务器和客户端之间的通信是加密的。你可以很容易地购买一个私人证书,低至15美元/月。

  • 哈希数据库字段,如密码。(确保不要使用MD5,因为它是不安全的。使用SHA1或SHA2代替)。

  • 不要在移动应用程序中存储用户密码,而是存储某种哈希认证密钥。