【问题标题】:How can i secure a web application in node js?如何保护节点 js 中的 Web 应用程序?
【发布时间】:2021-07-08 22:23:02
【问题描述】:

我看过的主要视频中的家伙存储在数据库中的哈希密码。没关系。但是如果我也想加密它们呢?例如,将 SHA512 与 RSA512 结合使用。但是哈希和加密之间有区别,反之亦然?我使用 Node Js/Mongoose 和 express。

【问题讨论】:

    标签: node.js express security hash cryptography


    【解决方案1】:

    欢迎来到 Stack ,您应该使用 bcrypt 包和 mongoose 、bcrypt.hashbcrypt.compare ... 使用盐轮 8 到 10:

    【讨论】:

    • 我知道,但我希望越来越多地保护我的 Web 应用程序。除了哈希算法...
    • couyou详细说明?
    • 使用散列 Cookie 进行安全的发布请求
    • 我大部分时间都使用 jwt
    • 简单:SHA512 + RSA > SHA512??可以一起用吗???
    【解决方案2】:

    散列和加密是两个不同的概念,主要区别在于散列是一种单向算法,而加密是双向的。您永远不应该加密密码,因为没有正当理由解密它们。

    如果您愿意,您可以加密加盐哈希,如果您有一个可靠的加盐哈希方案,那么它的必要性是值得怀疑的。如果你想走这条路,你正在寻找的术语是“静态加密”,你可以在谷歌上搜索它与猫鼬的关系。

    归根结底,您应该通过 TLS 获取您的密码,因此它们会被加密,然后您解密它们,因为您需要它的纯文本来生成用于存储的哈希。然后在散列之前或散列之后再次对其进行加密,您不会获得任何收益。事实上,您只是增加了计算工作以降低服务器的速度,并引入了您处理私钥的方式的责任。

    此外,SHA+RSA 不是加密方案,而是签名方案。您使用 SHA 散列并使用您的私钥签名,因此任何拥有您公钥的人都可以验证该散列是否有效并且来自您。

    【讨论】:

    • 那么如果我对密码进行哈希处理然后加密它,会因为添加无用的计算工作而无用吗?但是有了这个签名方案,密码会更安全吧?
    • 不,使用公钥签名是一个完全不同的用例,您将某些东西提供给第三方,并且您希望他们能够验证它的完整性(通过哈希)和真实性(使用你的公钥来验证它在你散列后没有改变)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 2010-12-15
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多