【问题标题】:Where to store API token, user/pass etc在哪里存储 API 令牌、用户/通行证等
【发布时间】:2015-07-02 04:48:49
【问题描述】:

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

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

我将用于访问其他服务的 Web 应用程序身份验证凭据放在哪里可以安全地免受外部攻击?

【问题讨论】:

    标签: api token credentials


    【解决方案1】:

    看到使用其他几种服务的混搭变得越来越流行,这是一个很好的问题。但不幸的事实是,您确实无法将此类凭据放在实际位置,这样它们就可以完全安全地免受外部攻击。以下是一些选项:

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

    【讨论】:

    • 所以所有应用程序都位于服务器上的 D: 中,因此 IIS 和运行我们的服务器应用程序的用户显然也对 D 进行了读写操作。我正在考虑将它们粘贴在 C 驱动器某个位置的配置文件中,或者 D 上位于我们的 Web 应用程序所在文件夹之外的某个位置。这样,至少一个错误的配置通常不会通过 URL 公开凭据。必须是有人获得了文件访问权限,在那时,无论如何,这很糟糕。
    • 没错,我应该提到,只有在文件保存在 webapp 文件夹结构之外的情况下,数字 3 才比 1 更安全 :-)
    • 服务器上的文件很像app-configs。在应用程序设置和应用程序配置之前,我们会将所有设置保留在数据库 except 数据库凭据中,这些凭据将位于 ini 文件中。所有好的建议。
    【解决方案2】:

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

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

    【讨论】:

    • 但是凭证不是用户凭证。它们是我的服务器使用 API 访问另一台服务器的凭据。它们对所有“用户”都是一样的。我所说的应用程序是指网络应用程序。我所说的所有这些代码都是服务器端代码。
    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2012-08-31
    • 2016-03-15
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    相关资源
    最近更新 更多