我正在实现一个安静的api,我想知道是否可以使用ajax安全地进行身份验证,而不会泄露身份验证信誉?将使用的凭证与使用curls传递的方式相同:
curl_setopt($ch, CURLOPT_USERPWD, 'username:password');
将使用以下方式收到:
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_USER'];
$_SERVER['PHP_AUTH_PW'];
这可能吗?如果可以,怎么做?
答案 0 :(得分:3)
没有。这是实施Oauth的确切目的和用例。
使用基本HTTP
授权将公开凭证,尤其是来自ajax的凭据,因为即使您通过HTTPS
运行所有内容,它仍将在客户端代码中可用(在发出任何请求之前)。< / p>
如果您仅在内部使用此API(不希望第三方开发人员使用它),您可能会尝试使用“API密钥”而不是纯文本用户名和密码。这样,密钥可以在被破坏时重新生成,并且永远不会暴露您的用户(可能)重用密码。
我发现API密钥+ HTTPS涵盖了很多这样的情况。
您只需生成一个唯一的哈希,然后使用它来验证用户... Basecamp API使用API密钥作为用户名。
curl_setopt($ch, CURLOPT_USERPWD, '<API KEY>:x');