上周我一直在阅读/谷歌搜索解决这个问题/应用程序的最佳方法。
我有一个应用程序,基本上是一个数据库前端,目前它存储数据在本地,所有工作愉快(可在应用程序商店)。
我接下来要做的是将这些数据存储在服务器上。
(在此之前,我没有任何服务器经验,所以从这一点开始,从我自己的研究和假设,如果有什么是不正确的,请指出给我)。
我决定RESTful web服务设计将是我想要的最好的。基本意图是iPad/Android将能够与web服务对话,web服务位于MySQL数据库之上,web服务将接收字符串,视频,照片。
我目前的情况是我可以得到webservice与MySQL数据库交谈,我可以从iPad发送简单的请求数据(字符串)和发布数据(字符串),(仍然需要找出处理照片和视频的最佳方式,但这是一个不同的问题)。
我的问题:什么是使这个web服务登录/安全的最好方法。
数据很敏感,所以必须要安全。目前,用户在没有用户名的情况下无法访问该应用程序。密码,但显然我也需要在web服务中采取预防措施。
我已经做了大量的谷歌研究,甚至在这里的主题,我似乎经常看到评论"这个方法已经过时了"等。
似乎有两种基本的方法,1)基本上有一个在初始启动时配置的GUID <-我认为2)在每次请求数据时也传输密码/用户名。
任何帮助指导将不胜感激。
感谢注:不好意思,那篇文章
-
可以对服务器和客户端之间交换的数据进行加密和签名。为此,您可以免费生成自己的可信证书。您必须根据您正在使用的技术寻找方法。这将保护您免受中间人攻击,因为入侵者无法读取或更改数据。
-
您在代码中使用的任何密码都应该加密,以防止反向工程(至少对于业余爱好者)
-
使用基于密钥的加密算法
-
捕获所有异常,错误不应该被传输到客户端,因为它是通往系统的大门。
-
保护您的wsdl文件(如果您有的话)不被公众查看。
-
验证您的表单,用户不应该能够注入特殊字符,如"<",">","'","=","-"…
这是我现在能想到的
您可以使用以下方法使您的API安全。
-
oAuth实现发送和接收带有认证头的数据。
-
SSL证书,以确保服务器和客户端之间的通信是加密的。你可以很容易地购买一个私人证书,低至15美元/月。
-
哈希数据库字段,如密码。(确保不要使用MD5,因为它是不安全的。使用SHA1或SHA2代替)。
-
不要在移动应用程序中存储用户密码,而是存储某种哈希认证密钥。