【问题标题】:How to Securely Store Various Credentials?如何安全存储各种凭证?
【发布时间】:2018-03-21 20:50:09
【问题描述】:

背景:我正在开发一个应用程序(用于学校项目),该应用程序本质上将成为一种网络资产管理和修复工具。它将扫描网络中的设备,收集有关它们的信息并做一些与问题无关的其他事情。它的一项功能是允许用户为各种网络设备提供登录凭据,以便应用程序可以登录到这些设备,以便收集更多信息,然后允许进行更改。

我的问题:我如何能够安全地存储这些提供的凭据。目前后端将包含一个 PostgreSQL 数据库(它将包含扫描数据),但我不确定将它们存储在那里是否安全,或者我应该如何解决安全存储它们的问题,以便它们可能是以后用。

P.S.:如果您需要任何其他信息,请告诉我,我是使用堆栈溢出的新手,所以我不确定我是否提供了足够的详细信息。谢谢。

【问题讨论】:

    标签: postgresql security passwords credentials


    【解决方案1】:

    https://www.postgresql.org/docs/current/static/pgcrypto.html 文档中的示例非常具体。每个数据库创建一次扩展:

    t=# create extension pgcrypto;
    CREATE EXTENSION
    

    假设密码是Ирландия,然后使用随机盐:

    t=# select crypt('Ирландия', gen_salt('md5'));
                   crypt
    ------------------------------------
     $1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1
    (1 row)
    

    或:

    t=# select crypt('Ирландия', gen_salt('md5'));
                   crypt
    ------------------------------------
     $1$wjJDa4Np$M7XqQIrgnfpAf.CLtrpkv1
    (1 row)
    

    每次结果都不一样,所以拿其中任何一个来检查密码是否正确,例如:

    t=# select crypt('Ирландия', '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1') = '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1' as match;
     match
    -------
     t
    (1 row)
    

    错了:

    t=# select crypt('ИрландияNOT', '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1') = '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1' as match;
     match
    -------
     f
    (1 row)
    

    上述函数的参数在 F.26.2 部分。密码哈希函数

    【讨论】:

      猜你喜欢
      • 2014-04-02
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 2014-09-19
      • 2021-07-31
      相关资源
      最近更新 更多