我正在使用PHP 5.4构建REST api,并且我正在使用我自己的自定义身份验证库。我正在密切关注2脚OAUTH使用的格式。 (参考:http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/)
遵循此规范,我需要与每个请求一起发送几个元数据,以便我可以安全地对用户进行身份验证。
我只是想知道发送所有这些元数据的最佳做法是什么?
我正在考虑创建自定义标头并在那里发送这些内容。这样我可以将这些数据与函数所需的实际参数分开,但我不确定这是最佳实践。
Ex:MY-API-APP-ID:243242,MY-API-TIMESTAMP:123123123等......
或者
所有这些事情都应该作为参数传递给每个请求吗?
GET方法怎么样,它们只是放在查询字符串中? (?时间戳= 12312312&安培; APPID = 123123 ...)
谢谢!
答案 0 :(得分:1)
我实际上不久前做过这样的事情。我将自己的API身份验证器编写为Codeigniter库,并自动加载它以便检查每个页面请求。
我决定在每次请求时发送自定义标题中的所有内容:
Auth-Token
Auth-Device
Auth-Timestamp
Auth-Hash
我不建议在GET参数中执行这些操作只是因为它使得使用URL变得更加麻烦,并且在那时它有点停止RESTful。
那就是说,我确信有些人会指出你不应该创建自定义请求标头,而且我确信我们应该如何在身份验证解决方案中使用标头。但是应用程序和API工作得很好,所以我很满意我的“呃,它的工作”解决方案。
但是请注意,我们使用SSL加密了标题并阻止了任何类型的嗅探或中间人攻击。