在哪里存储 API 令牌,user/pass 等

Where to store API token, user/pass etc

所以我有一个网页。该网页使用基本身份验证、oAuth、摘要等访问 API。我必须将某种身份验证发送到 API 端点到另一个服务。假设它是 Facebook OpenGraph API.

Facebook 向我颁发了凭据以便使用它 API。我在哪里存储这些凭据以免受外部攻击?我总是把它们放在我的服务器端代码中,就像 API 文档告诉你的那样。这样够安全吗?我不担心内部滥用,我担心外部攻击。

我应该将我的 Web 应用程序身份验证凭据放在哪里,它将用来访问其他服务以免受外部攻击?

如果您担心外部攻击并且非常注重安全,则不应将凭据存储在您的应用中。将凭据存储在服务器上。您的应用程序应在用户需要进行身份验证时提示用户输入凭据。

身份验证后,如果您想保留用户的登录状态,请设置 cookie,可以是在浏览器会话结束时过期的会话 cookie,也可以是不会过期的永久 cookie。

看到使用其他几种服务的混搭正变得越来越流行,这是个好问题。但不幸的是,您真的无法将此类凭据放在实际的地方,因为它们绝对不会受到外部攻击。以下是一些选项:

  1. 将它们保留在源代码中。攻击者可以通过错误配置服务器来访问源代码,这是服务器软件中的一个弱点。或者他可以访问服务器上的文件系统或拦截服务器和 Facebook 之间的网络流量。
  2. 将它们保存在服务器外部的数据库中。但是,您在哪里保存数据库的凭据以便您的代码可以访问它?您只是将问题转移到了另一组凭据上,如果可以在本地网络外部访问数据库,那么您实际上已经增加了攻击面。
  3. 将它们保存在服务器上的一个文件中。现在攻击者必须获得对文件系统的访问权限或拦截网络流量。所以这比以前的选项更安全。