我目前正在为一个非常繁忙的互联网网站构建API.它是用PHP编写的PHP.现在这是我写的第一个API,允许人们远程访问他们的帐户.一旦API在线,开发人员就可以从中编写自己的工具.
现在我有API工作,但我不确定它是否完全安全.
一个可行的示例网址是: http://domain.com/api.php?api_option=list&api_user_name=USERNAME&api_user_password=PASSWORD
USERNAME
:将是用户的实际用户名
PASSWORD
:将是他们的实际密码的MD5编码字符串.
如果详细信息匹配,则返回结果,如果不匹配,则返回错误.
所有外部$_GET
输入都得到了mysql_real_escape_string()
治疗.
我想保持简单,但我不确定这种方式是否是一种安全的方式,可以使用直接连接到用户帐户数据的公共API.
非常感谢您的想法和建议.
Spe*_*kim 18
对于对互联网的热爱,请不要这样做.我恳请您花时间为您的API实施OAuth.请.请拜托.
看看这个:http://toys.lerdorf.com/archives/55-Writing-an-OAuth-Provider-Service.html
如何使用HMAC_SHA1和用户密码签名请求?例如,您的网址:http://domain.com/api.php?api_option=list&api_user_name=USERNAME&api_user_password=PASSWORD
添加时间戳和/或随机字符串(nonce)并构建规范化的base_string:
$base_string = "api_option=list&api_user_name=USERNAME×tamp=1296875073&nonce=hgg65JHFj";
$signature = hmac_sha1($base_string, PASSWORD);
Run Code Online (Sandbox Code Playgroud)
那么新的URL将是:http: //domain.com/api.php?api_option = list&api_user_name = USERNAME×tamp = 1296875073&nonce = hgg65JHFj&签名= kfvyhgfytgyr6576yfgu
您的服务器所做的是获取除签名之外的所有选项,然后使用相同的方法生成签名,并将其与客户端发送的签名进行比较,该签名应该相同.
即使对其进行编码,也不要使用密码进行API清除,尤其是在MD5中进行编码时.此外,我也不会使用用户名.让用户生成一个密钥.您正在让某人知道访问用户帐户时需要知道的50%的内容,并且MD5有很多网站可以撤消它并找到密码匹配.关键当然是最好的方法,因此开发人员可以为了安全目的而进一步重新开发它.总是想到安全.
归档时间: |
|
查看次数: |
24497 次 |
最近记录: |