首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种保护云中的密码的加密方法

一种保护云中的密码的加密方法

简介在本文中,后端开发人员可以了解为什么使用加密很重要,以及如何有效地使用它来保护云上的用户信息(特别是密码),使得数据即使泄露也不会在数十年内被破解。安全性是云中的一个非常重要的主题,它对全栈开发至关重要,而且在所有产品和服务上都不可或缺。
我们首先会列出一些在开发中考虑安全性时要执行(或不执行)的简单事务:
  • 始终选择使用经过其他人仔细检查和审核的非本人的哈希/加密库。
  • 不要将密码输出到日志中!
  • 使用某种形式的密钥管理服务。
  • 不要将密钥(API 密钥、密码)提交到代码存储库中。
在本文中,我将通过一个示例应用程序来重点介绍加密关键数据的方式。对于本文中涉及的密码存储,我们将使用一个 ,因为它几乎可以在任何系统上轻松使用。几乎所有地方都使用着相同的原则和理念,而且数据库系统应该无关紧要(但根据所选的数据库,可能存在对用户信息执行哈希运算和保护的更好方法)。我还想展示,如果您丢失了数据库文件,但仍保持用户哈希值完整且无法破解,结果会怎样?
使用 bcrypt想进一步了解 Node.js?
访问 。
在几分钟内创建、构建并运行一个 Node.js 应用程序。然后快速部署到。

是目前对密码执行哈希运算的最广泛使用的函数之一。它适用于大部分编程语言,而且通常有一些可用于特定框架和数据库的非常特殊的模块。让我们看看这个。此代码通常与                Node.js 一起使用,而且非常简单(它允许采用 sync 或 async                的方式来调用加盐和哈希函数)。它还使您无需担心实现细节和加盐过程,使您能专注于防止意外的密码泄露。
哈希运算、盐和加密是什么?尽管哈希运算和加密看起来可能没什么不同,而且可以互换使用,但它们实际上有很大区别,而且有不同的用例。哈希函数接受一些输入,并对输出进行单向映射。虽然有众多的哈希技术和算法,但我推荐对密码使用                    bcrypt。可以,但通常不必了解这些函数的基础细节。在执行哈希运算期间使用了盐,将盐作为提供给哈希函数的附加信息,使您(意外或通过暴力)即使找到一个哈希值,也无法校验其他可能具有类似输入的哈希值。例如,user_1                有一个与 user_2 的密码相同的密码。如果哈希函数中使用了盐,这两个用户的密码就无法被找到。要进一步了解此函数,提供了各种各样的信息和示例。
加密也是某个输入与一个输出之间的一对一映射。一个重要的关键区别是,如果您拥有加密密钥,那么加密是可逆的。
您可以在以后使用哈希运算来检查一个输入与另一个输入的映射,但您可能并不想直接存储该输入(密码、pin                编号等)。在发送消息时(双方都有一个用于编码/解码的密钥),或者在您想存储一些隐私信息(比如家庭地址或信用卡),但需要在以后通过某种方式检索此信息时,可以使用加密。
前端因为本文的重点不是前端,所以我们不打算采用任何会增加复杂性的内容或引入另一个令人担忧的框架。我们将在同一个页面上采用两个用于登录/注册的表单。除了使用超级简单的引导指令外,我们不会对这些表单执行任何操作,因为这不是本文的重点。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<form action="/signin" method="post">


    <div class="row">
      <div class="col">
        
        <input name="email" type="email" class="form-control" placeholder="email"/>
      </div>
      <div class="col">


        <input name="password" type="password" class="form-control" placeholder="password"/>
      </div>
      <div class="col">
        <button class="btn btn-dark">sign in</button>
      </div>
   

</form>


<form action="/register" method="post">

    <div class="row">
      <div class="col">
        
        <input name="email" type="email" class="form-control" placeholder="email"/>
      </div>
      <div class="col">
         
        <input name="password" type="password" class="form-control" placeholder="password"/>
      </div>
      <div class="col">
        <button class="btn btn-dark">register</button>
      </div>
    </div>
  
</form>




我们还将输入从表单提交到后端,而且不打算校验/创建/设置会话,因为这不属于本文的讨论范围,而且根据应用程序的目标或目的,涉及的内容可能很广泛。
返回列表