All language subtitles for Active Record Encryption _ Drifting Ruby (Transcribed on 23-Mar-2023 16-53-53)-zh-CN
Afrikaans
Akan
Albanian
Amharic
Arabic
Armenian
Azerbaijani
Basque
Belarusian
Bemba
Bengali
Bihari
Bosnian
Breton
Bulgarian
Cambodian
Catalan
Cebuano
Cherokee
Chichewa
Chinese (Traditional)
Corsican
Croatian
Czech
Danish
Dutch
English
Esperanto
Estonian
Ewe
Faroese
Filipino
Finnish
French
Frisian
Ga
Galician
Georgian
German
Greek
Guarani
Gujarati
Haitian Creole
Hausa
Hawaiian
Hebrew
Hindi
Hmong
Hungarian
Icelandic
Igbo
Indonesian
Interlingua
Irish
Italian
Japanese
Javanese
Kannada
Kazakh
Kinyarwanda
Kirundi
Kongo
Korean
Krio (Sierra Leone)
Kurdish
Kurdish (Soranî)
Kyrgyz
Laothian
Latin
Latvian
Lingala
Lithuanian
Lozi
Luganda
Luo
Luxembourgish
Macedonian
Malagasy
Malay
Malayalam
Maltese
Maori
Marathi
Mauritian Creole
Moldavian
Mongolian
Myanmar (Burmese)
Montenegrin
Nepali
Nigerian Pidgin
Northern Sotho
Norwegian
Norwegian (Nynorsk)
Occitan
Oriya
Oromo
Pashto
Persian
Polish
Portuguese (Brazil)
Portuguese (Portugal)
Punjabi
Quechua
Romanian
Romansh
Runyakitara
Russian
Samoan
Scots Gaelic
Serbian
Serbo-Croatian
Sesotho
Setswana
Seychellois Creole
Shona
Sindhi
Sinhalese
Slovak
Slovenian
Somali
Spanish
Spanish (Latin American)
Sundanese
Swahili
Swedish
Tajik
Tamil
Tatar
Telugu
Thai
Tigrinya
Tonga
Tshiluba
Tumbuka
Turkish
Turkmen
Twi
Uighur
Ukrainian
Urdu
Uzbek
Vietnamese
Welsh
Wolof
Xhosa
Yiddish
Yoruba
Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,000 --> 00:00:14,800
在这一集中,我们将了解 ActiveRecord 加密,这是一个非常重要的部分
2
00:00:14,800 --> 00:00:16,720
保护您的数据。
3
00:00:16,720 --> 00:00:21,920
这与您可能会在设备或其他身份验证方法中看到的散列不同
4
00:00:21,920 --> 00:00:27,840
你的密码被散列到数据库中,但它不再是可逆的
5
00:00:27,840 --> 00:00:29,840
用原来的密码。
6
00:00:29,840 --> 00:00:35,440
相反,当您登录时,您只需将该登录密码与散列值进行比较
7
00:00:35,440 --> 00:00:37,440
存储在数据库中。
8
00:00:37,440 --> 00:00:43,519
但是使用 ActiveRecord 加密,我们加密静态数据,所以在数据库中
9
00:00:43,519 --> 00:00:47,280
级别,并且可以在我们的视图中解密。
10
00:00:47,280 --> 00:00:53,120
所以在这个例子中,我们有我们的描述,这是一个动作文本,我们将加密
11
00:00:53,120 --> 00:00:56,160
该数据以及密码。
12
00:00:56,160 --> 00:01:01,760
因此,当我们创建用户时,看起来并没有发生任何特别的事情,直到您查看
13
00:01:01,760 --> 00:01:03,919
在应用程序日志中。
14
00:01:03,919 --> 00:01:08,960
所以如果我们向上滚动一点,我们可以看到这个用户是在哪里创建的,然后我们可以看到
15
00:01:08,960 --> 00:01:15,840
密码,而不是将原始数据作为 talkosoup,它是加密的。
16
00:01:15,840 --> 00:01:20,960
插入的动作文本也一样,正文是加密的,所以你不能真的
17
00:01:20,960 --> 00:01:23,360
理解它的信息。
18
00:01:23,360 --> 00:01:28,320
需要注意的一件重要事情是 Rails 在某些属性方面做得很好
19
00:01:28,320 --> 00:01:32,560
将自动从日志中过滤其值。
20
00:01:32,560 --> 00:01:38,080
所以你可以看到密码短语,我在这个示例应用程序中没有做任何不同的事情
21
00:01:38,080 --> 00:01:44,080
对于密码,但是你会看到它以纯文本形式出现的描述,
22
00:01:44,080 --> 00:01:48,880
如果需要保护此属性,那将是一个安全问题。
23
00:01:48,880 --> 00:01:53,440
有很多原因让你想要使用活动记录加密之类的东西,
24
00:01:53,440 --> 00:01:57,679
它的一些突出好处是,如果您的数据库曾经泄漏或日志被
25
00:01:57,679 --> 00:02:02,960
曾经泄露过,那么获得该信息访问权限的演员将不会被授予隐私权
26
00:02:02,960 --> 00:02:04,240
信息。
27
00:02:04,240 --> 00:02:09,440
但是当然,通过加密,我们有解密层,这是在应用程序中完成的
28
00:02:09,440 --> 00:02:15,600
级别,当我们使用这个应用程序时,我们能够以纯文本形式看到它。
29
00:02:15,600 --> 00:02:22,000
所以我们要做的第一件事是调用 Rails 操作下划线文本,冒号安装,安装
30
00:02:22,000 --> 00:02:28,640
动作文本的迁移,并完成所有设置,然后我们将生成一个脚手架
31
00:02:28,640 --> 00:02:33,600
对于用户的表,我们会有一个名字,我们会有一个电子邮件地址,然后我们会有
32
00:02:33,600 --> 00:02:39,120
某种受保护的信息,这些信息非常重要,不能泄露。
33
00:02:39,120 --> 00:02:41,519
所以我们称之为密码。
34
00:02:41,520 --> 00:02:46,000
因此,一旦我们完成了这项工作,我们就可以继续进行迁移,而当我们处于
35
00:02:46,000 --> 00:02:52,800
终端,我们将继续运行命令 db,冒号加密,冒号初始化,然后我们可以
36
00:02:52,800 --> 00:02:57,600
复制此输出并将其添加到我们的凭据中。
37
00:02:57,600 --> 00:03:04,880
所以我们可以运行 bin Rails credentials,冒号编辑,然后我们可以简单地将它粘贴到这里。
38
00:03:04,880 --> 00:03:08,000
如果您有多个环境,这也确实有效。
39
00:03:08,000 --> 00:03:12,480
因此,如果您将环境标志传递到凭据编辑中,并在
40
00:03:12,480 --> 00:03:16,560
环境喜欢开发,那么你就可以做同样的事情。
41
00:03:16,560 --> 00:03:21,520
如果我想再次运行此命令以生成一组新的凭据,我们可以这样做,
42
00:03:21,520 --> 00:03:26,000
所以我们可以将其下载到我们的产品和加密凭证中。
43
00:03:26,000 --> 00:03:31,040
因此,我们将继续设置使用操作文本的描述。
44
00:03:31,040 --> 00:03:34,120
所以在用户模型中,我们做了一个有富文本的。
45
00:03:34,120 --> 00:03:39,000
我们将为描述设置它,如果我们想开始加密它,我们所要做的就是
46
00:03:39,000 --> 00:03:42,680
do就是设置这个,加密它,等于true。
47
00:03:42,680 --> 00:03:47,160
这就是启用操作文本加密所需要做的全部工作。
48
00:03:47,160 --> 00:03:52,120
我们当然需要在允许的参数中进入用户的控制器,
49
00:03:52,120 --> 00:03:54,640
我们还需要添加描述。
50
00:03:54,640 --> 00:03:58,160
但是我们不必围绕加密做任何额外的事情。
51
00:03:58,160 --> 00:04:02,960
视图的方式相同,在用户的表单中,我们可以进入这里,我将重用它
52
00:04:02,960 --> 00:04:08,160
一些代码,而不是电子邮件,我们将有描述,然后我们可以将其更改为丰富的
53
00:04:08,160 --> 00:04:09,680
文本区域。
54
00:04:09,680 --> 00:04:15,800
所以现在我们有一个功能齐全的静态加密功能,用于操作文本。
55
00:04:15,800 --> 00:04:19,880
这样做的好处是我们可能会在我们的许多领域使用动作文本
56
00:04:19,880 --> 00:04:24,880
应用程序,但也许只有这个描述字段才是真正需要的
57
00:04:24,880 --> 00:04:29,800
加密,因为它包含个人身份信息。
58
00:04:29,800 --> 00:04:34,800
那么如果你已经创建了一个现代 Rails 应用程序,你可以在配置下
59
00:04:34,800 --> 00:04:39,040
初始值设定项,并且应该有一个过滤器参数日志记录。
60
00:04:39,040 --> 00:04:42,120
在这里,已经有一些例子。
61
00:04:42,120 --> 00:04:47,120
如果我们需要根据描述添加一个额外的,我们可以在这里做,并且
62
00:04:47,120 --> 00:04:52,840
所以现在每当我们将某些东西保存到数据库中,或者任何东西通过我们的应用程序
63
00:04:52,840 --> 00:04:58,240
从用户输入中,这将被过滤掉,所以我们不会看到暗示文本
64
00:04:58,240 --> 00:04:59,760
在日志中。
65
00:04:59,760 --> 00:05:02,599
所以现在我们只需要处理密码。
66
00:05:02,599 --> 00:05:07,920
为此,我们可以进行加密,我们可以指定我们的密码,仅此而已
67
00:05:07,920 --> 00:05:12,120
必须做,现在这个属性将被静态加密。
68
00:05:12,120 --> 00:05:16,640
但是,我们可能需要关注一些其他选项。
69
00:05:16,640 --> 00:05:21,360
例如,如果您希望能够搜索此属性,您将不会
70
00:05:21,360 --> 00:05:23,760
能够默认。
71
00:05:23,760 --> 00:05:28,760
因为有一个名为 deterministic 的标志默认设置为 false。
72
00:05:28,760 --> 00:05:33,200
如果你永远不需要查询密码,那么最好的做法是
73
00:05:33,200 --> 00:05:35,200
将此设置为 false。
74
00:05:35,200 --> 00:05:38,560
这将是最安全的数据存储方式。
75
00:05:38,560 --> 00:05:44,200
但是如果有一个你确实需要查询这个的用例,那么你会想要设置
76
00:05:44,200 --> 00:05:46,640
确定性设置为真。
77
00:05:46,640 --> 00:05:52,080
所以这样,你将能够做一些事情,就像一个用户找到的,你
78
00:05:52,080 --> 00:05:57,000
可以指定密码,然后你可以输入你需要的任何字符串。
79
00:05:57,000 --> 00:06:02,160
并且因为密码短语属性设置为确定性的,那么你将能够
80
00:06:02,160 --> 00:06:03,560
做这种查询。
81
00:06:03,560 --> 00:06:08,840
但是,如果它设置为 false,那么您将无法查询密码,
82
00:06:08,840 --> 00:06:12,680
在这个特定的例子中你只会得到一个零回报。
83
00:06:12,680 --> 00:06:17,640
您可能想要做的另一件事,这更依赖于您的数据库,是忽略
84
00:06:17,640 --> 00:06:18,640
案子。
85
00:06:18,640 --> 00:06:20,440
您可以将其设置为 true。
86
00:06:20,440 --> 00:06:22,800
您也可以将其设置为小写。
87
00:06:22,800 --> 00:06:27,200
所以如果你有像电子邮件地址这样的东西,那么你可以在那个位置设置小写
88
00:06:27,200 --> 00:06:28,200
为真。
89
00:06:28,200 --> 00:06:33,840
所以当它被存储和加密时,实际上将值转换为小写。
90
00:06:33,840 --> 00:06:39,520
如果您将使用忽略大小写,那么添加另一个属性将很重要
91
00:06:39,520 --> 00:06:44,480
到您的数据库,这将是这种特殊情况下的密码。
92
00:06:44,480 --> 00:06:49,400
但是您需要使用原始下划线和属性名称作为前缀。
93
00:06:49,400 --> 00:06:54,880
通过添加该属性,您将能够使用这个忽略大小写,并且
94
00:06:54,880 --> 00:07:01,359
这将在加密密码之前存储一个小写版本,但随后它
95
00:07:01,359 --> 00:07:04,960
将密码短语存储在其原始文本中。
96
00:07:04,960 --> 00:07:09,000
这在您进行查询时非常重要,这将非常重要
97
00:07:09,000 --> 00:07:11,400
根据您的用例而有所不同。
98
00:07:11,400 --> 00:07:15,840
根据您的情况,您可能需要执行一些验证,
99
00:07:15,840 --> 00:07:22,159
我们也可以很容易地通过验证来做到这一点,然后我们指定我们的密码
100
00:07:22,159 --> 00:07:23,159
在这种情况下。
101
00:07:23,159 --> 00:07:28,080
我们可以做一些类似于唯一性的事情,我们可以将其设置为 true。
102
00:07:28,080 --> 00:07:32,440
假设我们确实有某种我们正在做的序列化。
103
00:07:32,440 --> 00:07:37,679
也许一个用户有一组设置,所以你添加了一个 JSON 数据类型,让我们
104
00:07:37,679 --> 00:07:42,840
将其称为数据库设置,并且您想对其进行加密,因为它可能包含
105
00:07:42,840 --> 00:07:45,000
一些敏感信息。
106
00:07:45,000 --> 00:07:50,120
所以你添加了加密设置,然后你也添加了序列化设置。
107
00:07:50,120 --> 00:07:54,440
也许我们会将其设置为散列或 JSON 或类似的东西。
108
00:07:54,440 --> 00:08:00,920
这会起作用,但是,这里的一个问题是我们需要执行序列化
109
00:08:00,920 --> 00:08:05,840
在加密之前,因为加密将依赖于对象
110
00:08:05,840 --> 00:08:10,200
一个字符串,而不是像散列这样的更复杂的对象。
111
00:08:10,200 --> 00:08:15,640
所以现在我们可以测试一下,我们将创建一个新用户,我们可以输入描述,
112
00:08:15,640 --> 00:08:18,240
然后我们可以输入一些密码。
113
00:08:18,240 --> 00:08:23,760
如果我们去展示页面,我们可以看到纯文本,L'Orealm Epsom of the
114
00:08:23,760 --> 00:08:26,800
描述,我们可以看到密码。
115
00:08:26,800 --> 00:08:31,800
如果我们转到日志并向上滚动一点,我们可以看到我们的帖子在哪里
116
00:08:31,800 --> 00:08:33,120
为用户。
117
00:08:33,120 --> 00:08:38,159
在此请求的打印件中,我们有用户名,如 Jane Doe,我们有
118
00:08:38,159 --> 00:08:43,600
电子邮件地址,描述现在被过滤,所以我们没有看到纯文本版本
119
00:08:43,600 --> 00:08:47,600
其中,以及密码短语默认情况下被过滤。
120
00:08:47,600 --> 00:08:52,480
但如果不是,那么您可以将其添加到过滤器参数中,记录
121
00:08:52,480 --> 00:08:54,719
在 Config Initializer 中。
122
00:08:54,719 --> 00:09:01,319
甚至在创建用户并插入加密属性的 SQL 查询中
123
00:09:01,319 --> 00:09:07,240
对于富文本,我们可以看到加密的密码以及正文
124
00:09:07,240 --> 00:09:09,120
对于动作文本。
125
00:09:09,120 --> 00:09:13,560
如果这是您需要添加到您的应用程序中的功能,那么我非常愿意
126
00:09:13,560 --> 00:09:17,680
建议通读 ActiveRecord 加密文档。
127
00:09:17,680 --> 00:09:22,320
ActiveRecord 加密的可扩展性比我们介绍的要好得多。
128
00:09:22,320 --> 00:09:25,960
您可以围绕密钥管理执行不同的操作。
129
00:09:25,960 --> 00:09:30,440
如果您有不同类型的策略需要用于加密,并且您是
130
00:09:30,440 --> 00:09:35,960
甚至可以轮换密钥,前提是您提供以前的密钥,这样您就可以
131
00:09:35,960 --> 00:09:42,760
所以解密内容,然后为任何新内容或更新添加活动密钥。
132
00:09:42,760 --> 00:09:46,880
如果你意识到你需要在事后添加加密,那么在你已经
133
00:09:46,880 --> 00:09:52,040
将您的数据库投入生产,现在确定其中一个属性
134
00:09:52,040 --> 00:09:54,760
表确实需要加密。
135
00:09:54,760 --> 00:09:59,960
您可以使用 ActiveRecord 加密开箱即用地执行此操作,您只需
136
00:09:59,960 --> 00:10:02,080
在您的环境中设置。
137
00:10:02,080 --> 00:10:06,960
他们可以计算 ActiveRecord 加密并支持未加密数据。
138
00:10:06,960 --> 00:10:12,320
所以你仍然可以读取未加密的数据,但我认为这是
139
00:10:12,320 --> 00:10:17,040
也很重要,现在它可能有某种速率任务,然后会占用所有
140
00:10:17,040 --> 00:10:19,600
数据,然后对其进行加密。
141
00:10:19,600 --> 00:10:23,720
因为您希望在数据库中保留其中一个已加密的列
142
00:10:23,720 --> 00:10:27,400
一些未加密数据中的数据太长了。
143
00:10:27,400 --> 00:10:32,760
我认为速率任务或可以快速加密所有数据的东西会
144
00:10:32,760 --> 00:10:34,400
是你最好的选择。
145
00:10:34,400 --> 00:10:37,120
然后你可以回来禁用这个标志。
146
00:10:37,120 --> 00:10:41,040
并且对以前的加密方案也有很好的支持。
147
00:10:41,040 --> 00:10:46,000
因此,假设您之前曾说过确定生病被设置为假,或者您
148
00:10:46,000 --> 00:10:49,079
只是根本没有这个确定性标志。
149
00:10:49,079 --> 00:10:54,000
它默认为 false,但现在您需要确定性,因为稍后会
150
00:10:54,000 --> 00:10:58,720
你现在已经决定这需要是一个可编排的属性。
151
00:10:58,720 --> 00:11:03,560
所以这里有很多有用的信息,很多信息确实是
152
00:11:03,560 --> 00:11:08,200
具体用例取决于您当前遇到的情况。
153
00:11:08,200 --> 00:11:10,320
好吧,这就是这一集的全部内容。
154
00:11:10,320 --> 00:11:25,600
感谢收看。
14990