通过Ajax进行Restful身份验证

时间:2012-02-06 20:13:16

标签: php javascript ajax security authentication

我正在实现一个安静的api,我想知道是否可以使用ajax安全地进行身份验证,而不会泄露身份验证信誉?将使用的凭证与使用curls传递的方式相同:

curl_setopt($ch, CURLOPT_USERPWD, 'username:password');

将使用以下方式收到:

$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_USER'];
$_SERVER['PHP_AUTH_PW'];

这可能吗?如果可以,怎么做?

1 个答案:

答案 0 :(得分:3)

没有。这是实施Oauth的确切目的和用例。

使用基本HTTP授权将公开凭证,尤其是来自ajax的凭据,因为即使您通过HTTPS运行所有内容,它仍将在客户端代码中可用(在发出任何请求之前)。< / p>

如果您仅在内部使用此API(不希望第三方开发人员使用它),您可能会尝试使用“API密钥”而不是纯文本用户名和密码。这样,密钥可以在被破坏时重新生成,并且永远不会暴露您的用户(可能)重用密码。

我发现API密钥+ HTTPS涵盖了很多这样的情况。

您只需生成一个唯一的哈希,然后使用它来验证用户... Basecamp API使用API​​密钥作为用户名。

curl_setopt($ch, CURLOPT_USERPWD, '<API KEY>:x');