You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
*`message`: Сообщение, которое вы хотите отобразить, если объект будет передан в Client Component. Это сообщение будет отображаться как часть ошибки, которая будет выброшена, если объект будет передан в Client Component.
57
+
*`message`: Сообщение, которое вы хотите отобразить, если объект будет передан в Client Component. Это сообщение будет частью ошибки, которая будет выброшена, если объект будет передан в Client Component.
59
58
60
-
*`object`: Объект, который нужно пометить. Функции и экземпляры классов могут быть переданы в `taintObjectReference`как`object`. Функции и классы уже заблокированы для передачи в Client Components, но стандартное сообщение об ошибке React будет заменено тем, что вы определили в `message`. Когда конкретный экземпляр Typed Array передается в `taintObjectReference` как `object`, любые другие копии этого Typed Array не будут помечены.
59
+
*`object`: Объект для пометки. Функции и экземпляры классов могут быть переданы в `taintObjectReference`в качестве`object`. Функции и классы уже заблокированы для передачи в Client Components, но стандартное сообщение об ошибке React будет заменено тем, что вы определили в `message`. Когда конкретный экземпляр Typed Array передается в `taintObjectReference` как `object`, любые другие копии этого Typed Array не будут помечены.
- Воссоздание или клонирование помеченного объекта создает новый непомеченный объект, который может содержать конфиденциальные данные. Например, если у вас есть помеченный объект `user`, `const userInfo = {name: user.name, ssn: user.ssn}` или `{...user}` создадут новые объекты, которые не помечены. `taintObjectReference` защищает только от простых ошибок, когда объект передается в Client Component без изменений.
67
+
- Воссоздание или клонирование помеченного объекта создает новый непомеченный объект, который может содержать конфиденциальные данные. Например, если у вас есть помеченный объект `user`, `const userInfo = {name: user.name, ssn: user.ssn}` или `{...user}` создадут новые объекты, которые не помечены. `taintObjectReference` защищает только от простых ошибок при передаче объекта в Client Component без изменений.
### Предотвращение непреднамеренной передачи пользовательских данных клиенту {/*prevent-user-data-from-unintentionally-reaching-the-client*/}
81
80
82
-
Client Component никогда не должен принимать объекты, содержащие конфиденциальные данные. В идеале, функции получения данных не должны раскрывать данные, к которым текущий пользователь не должен иметь доступа. Иногда ошибки случаются во время рефакторинга. Чтобы защититься от таких ошибок в будущем, мы можем "пометить" объект пользователя в нашем API данных.
81
+
Client Component никогда не должен принимать объекты, содержащие конфиденциальные данные. В идеале, функции получения данных не должны раскрывать данные, к которым у текущего пользователя не должно быть доступа. Иногда при рефакторинге случаются ошибки. Чтобы защититься от таких ошибок в будущем, мы можем "пометить" объект пользователя в нашем API данных.
@@ -95,13 +94,13 @@ export async function getUser(id) {
95
94
}
96
95
```
97
96
98
-
Теперь, когда кто-либо попытается передать этот объект в Client Component, будет выброшена ошибка с переданным сообщением об ошибке.
97
+
Теперь, когда кто-либо попытается передать этот объект в Client Component, будет выброшена ошибка с указанным сообщением.
99
98
100
99
<DeepDive>
101
100
102
101
#### Защита от утечек при получении данных {/*protecting-against-leaks-in-data-fetching*/}
103
102
104
-
Если вы работаете в среде Server Components, имеющей доступ к конфиденциальным данным, вы должны быть осторожны, чтобы не передавать объекты напрямую:
103
+
Если вы используете среду Server Components, имеющую доступ к конфиденциальным данным, вы должны быть осторожны и не передавать объекты напрямую:
105
104
106
105
```js
107
106
// api.js
@@ -117,7 +116,7 @@ import { InfoCard } from 'components.js';
117
116
118
117
exportasyncfunctionProfile(props) {
119
118
constuser=awaitgetUser(props.userId);
120
-
// НЕ ДЕЛАЙТЕ ЭТОГО
119
+
// НЕ ДЕЛАЙТЕ ТАК
121
120
return<InfoCard user={user} />;
122
121
}
123
122
```
@@ -131,7 +130,8 @@ export async function InfoCard({ user }) {
131
130
}
132
131
```
133
132
134
-
В идеале, `getUser` не должен раскрывать данные, к которым текущий пользователь не должен иметь доступа. Чтобы предотвратить передачу объекта `user` в Client Component в дальнейшем, мы можем "пометить" объект пользователя:
133
+
В идеале, `getUser` не должен раскрывать данные, к которым у текущего пользователя не должно быть доступа. Чтобы предотвратить передачу объекта `user` в Client Component далее по цепочке, мы можем "пометить" объект пользователя:
134
+
135
135
136
136
```js
137
137
// api.js
@@ -148,7 +148,6 @@ export async function getUser(id) {
148
148
}
149
149
```
150
150
151
-
Теперь, если кто-либо попытается передать объект `user` в Client Component, будет выброшена ошибка с переданным сообщением.
151
+
Теперь, если кто-либо попытается передать объект `user` в Client Component, будет выброшена ошибка с указанным сообщением.
0 commit comments