我正在写一个使用facebook登录的iphone应用程序。当用户登录fb访问令牌时,电子邮件地址将通过Web服务发送到后端数据库。现在的问题是,当facebook更改访问令牌时,我将如何识别它。有人可能只是通过假装成用户的Web服务向我的数据库发送类似的数据,并更改我的数据库中的访问令牌。我必须以某种方式验证来自移动设备的Web服务调用。
如果不向用户提供密码,我将如何防止这种情况?
感谢。
答案 0 :(得分:0)
对此没有简单或真正的密闭解决方案。
但首先与后端的通信应该至少使用SSL加密来最小化中间人攻击的风险。
一种方法是在第一次运行时生成唯一标识符,并在服务器上使用相同的算法进行验证,从而为后端创建自己的访问令牌。但是,如果您的算法很弱,或者任何人对您的应用程序进行反编译,则可以了解如何生成标识符。
你应该至少使用sha加密,md5现在开始变弱。
生成非常简单的令牌的示例,不要在代码中使用它;
String salt = "twsg23s¤#"; //a random generated string (must be the same on the server and client
String token = sha1(sha1(facebookid + salt) + salt); //this will be your token
然后生成相同的令牌服务器端并将客户端令牌与servertoken进行比较。
我必须强调:你的盐被泄露和/或你的算法很弱,你的系统会有一个巨大的安全漏洞。