如何为本地和远程请求实现API安全性?

时间:2014-12-03 22:46:11

标签: web-services api security encryption

我已经设置了一个基于Web的API,允许远程应用程序获取GET / POST数据。每个API调用都使用用户ID和密码进行身份验证,该用户ID和密码使用仅为远程应用程序和网站所知的密钥加密。此身份验证不仅可以确保用户可以访问API,而且还允许我根据用户的配置文件实现安全功能(即,用户A可以查看项目A和B,但不能查看项目C)。

我希望我的服务器端网站页面能够通过AJAX调用远程调用相同的API方法,但是,在代码中存储加密密码似乎不对,我的网站实现了“登录为“功能,不允许我设置加密密码,因为密码不以纯文本格式存储。

对于不需要加密用户密码的远程和“本地”呼叫实施API安全性的好方法是什么?

1 个答案:

答案 0 :(得分:0)

您不应该在服务器端代码中存储用户名和密码。迟早有人会把注意力放在你的代码上,而你的数据也会很脆弱。

但是你也不应该在客户端代码中存储秘密(密钥)。你不应该假设你的客户可以信任保守这个秘密。

授予用户A访问项目A和B但不授予C的权限称为授权,取决于您知道谁调用您的API(身份验证)。

您应该查看OpenID Connect等身份验证协议和OAuth 2.0等授权协议。

另请参阅我对this问题的回答。