Skip to content

Commit cde292d

Browse files
docs: translate experimental_taintObjectReference.md to Русский
1 parent 2958f53 commit cde292d

1 file changed

Lines changed: 33 additions & 33 deletions

File tree

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,107 @@
1+
```html
12
---
23
title: experimental_taintObjectReference
34
version: experimental
45
---
56

67
<Experimental>
78

8-
**This API is experimental and is not available in a stable version of React yet.**
9+
**Этот API является экспериментальным и еще не доступен в стабильной версии React.**
910

10-
You can try it by upgrading React packages to the most recent experimental version:
11+
Вы можете попробовать его, обновив пакеты React до последней экспериментальной версии:
1112

1213
- `react@experimental`
1314
- `react-dom@experimental`
1415
- `eslint-plugin-react-hooks@experimental`
1516

16-
Experimental versions of React may contain bugs. Don't use them in production.
17+
Экспериментальные версии React могут содержать ошибки. Не используйте их в продакшене.
1718

18-
This API is only available inside React Server Components.
19+
Этот API доступен только внутри React Server Components.
1920

2021
</Experimental>
2122

22-
2323
<Intro>
2424

25-
`taintObjectReference` lets you prevent a specific object instance from being passed to a Client Component like a `user` object.
25+
`taintObjectReference` позволяет предотвратить передачу конкретного экземпляра объекта в Client Component, например объекта `user`.
2626

2727
```js
2828
experimental_taintObjectReference(message, object);
2929
```
3030

31-
To prevent passing a key, hash or token, see [`taintUniqueValue`](/reference/react/experimental_taintUniqueValue).
31+
Чтобы предотвратить передачу ключа, хэша или токена, см. [`taintUniqueValue`](/reference/react/experimental_taintUniqueValue).
3232

3333
</Intro>
3434

3535
<InlineToc />
3636

3737
---
3838

39-
## Reference {/*reference*/}
39+
## Справочник {/*reference*/}
4040

4141
### `taintObjectReference(message, object)` {/*taintobjectreference*/}
4242

43-
Call `taintObjectReference` with an object to register it with React as something that should not be allowed to be passed to the Client as is:
43+
Вызовите `taintObjectReference` с объектом, чтобы зарегистрировать его в React как нечто, что не должно быть передано Клиенту в неизменном виде:
4444

4545
```js
4646
import {experimental_taintObjectReference} from 'react';
4747

4848
experimental_taintObjectReference(
49-
'Do not pass ALL environment variables to the client.',
49+
'Не передавайте ВСЕ переменные окружения клиенту.',
5050
process.env
5151
);
5252
```
5353

54-
[See more examples below.](#usage)
54+
[См. больше примеров ниже.](#usage)
5555

56-
#### Parameters {/*parameters*/}
56+
#### Параметры {/*parameters*/}
5757

58-
* `message`: The message you want to display if the object gets passed to a Client Component. This message will be displayed as a part of the Error that will be thrown if the object gets passed to a Client Component.
58+
* `message`: Сообщение, которое вы хотите отобразить, если объект будет передан в Client Component. Это сообщение будет отображаться как часть ошибки, которая будет выброшена, если объект будет передан в Client Component.
5959

60-
* `object`: The object to be tainted. Functions and class instances can be passed to `taintObjectReference` as `object`. Functions and classes are already blocked from being passed to Client Components but the React's default error message will be replaced by what you defined in `message`. When a specific instance of a Typed Array is passed to `taintObjectReference` as `object`, any other copies of the Typed Array will not be tainted.
60+
* `object`: Объект, который нужно пометить. Функции и экземпляры классов могут быть переданы в `taintObjectReference` как `object`. Функции и классы уже заблокированы для передачи в Client Components, но стандартное сообщение об ошибке React будет заменено тем, что вы определили в `message`. Когда конкретный экземпляр Typed Array передается в `taintObjectReference` как `object`, любые другие копии этого Typed Array не будут помечены.
6161

62-
#### Returns {/*returns*/}
62+
#### Возвращает {/*returns*/}
6363

64-
`experimental_taintObjectReference` returns `undefined`.
64+
`experimental_taintObjectReference` возвращает `undefined`.
6565

66-
#### Caveats {/*caveats*/}
66+
#### Ограничения {/*caveats*/}
6767

68-
- Recreating or cloning a tainted object creates a new untainted object which may contain sensitive data. For example, if you have a tainted `user` object, `const userInfo = {name: user.name, ssn: user.ssn}` or `{...user}` will create new objects which are not tainted. `taintObjectReference` only protects against simple mistakes when the object is passed through to a Client Component unchanged.
68+
- Воссоздание или клонирование помеченного объекта создает новый непомеченный объект, который может содержать конфиденциальные данные. Например, если у вас есть помеченный объект `user`, `const userInfo = {name: user.name, ssn: user.ssn}` или `{...user}` создадут новые объекты, которые не помечены. `taintObjectReference` защищает только от простых ошибок, когда объект передается в Client Component без изменений.
6969

7070
<Pitfall>
7171

72-
**Do not rely on just tainting for security.** Tainting an object doesn't prevent leaking of every possible derived value. For example, the clone of a tainted object will create a new untainted object. Using data from a tainted object (e.g. `{secret: taintedObj.secret}`) will create a new value or object that is not tainted. Tainting is a layer of protection; a secure app will have multiple layers of protection, well designed APIs, and isolation patterns.
72+
**Не полагайтесь только на пометку для обеспечения безопасности.** Пометка объекта не предотвращает утечку всех возможных производных значений. Например, клон помеченного объекта создаст новый непомеченный объект. Использование данных из помеченного объекта (например, `{secret: taintedObj.secret}`) создаст новое значение или объект, который не помечен. Пометка — это уровень защиты; безопасное приложение будет иметь несколько уровней защиты, хорошо спроектированные API и паттерны изоляции.
7373

7474
</Pitfall>
7575

7676
---
7777

78-
## Usage {/*usage*/}
78+
## Использование {/*usage*/}
7979

80-
### Prevent user data from unintentionally reaching the client {/*prevent-user-data-from-unintentionally-reaching-the-client*/}
80+
### Предотвращение непреднамеренной передачи пользовательских данных клиенту {/*prevent-user-data-from-unintentionally-reaching-the-client*/}
8181

82-
A Client Component should never accept objects that carry sensitive data. Ideally, the data fetching functions should not expose data that the current user should not have access to. Sometimes mistakes happen during refactoring. To protect against these mistakes happening down the line we can "taint" the user object in our data API.
82+
Client Component никогда не должен принимать объекты, содержащие конфиденциальные данные. В идеале, функции получения данных не должны раскрывать данные, к которым текущий пользователь не должен иметь доступа. Иногда ошибки случаются во время рефакторинга. Чтобы защититься от таких ошибок в будущем, мы можем "пометить" объект пользователя в нашем API данных.
8383

8484
```js
8585
import {experimental_taintObjectReference} from 'react';
8686

8787
export async function getUser(id) {
8888
const user = await db`SELECT * FROM users WHERE id = ${id}`;
8989
experimental_taintObjectReference(
90-
'Do not pass the entire user object to the client. ' +
91-
'Instead, pick off the specific properties you need for this use case.',
90+
'Не передавайте весь объект пользователя клиенту. ' +
91+
'Вместо этого выбирайте конкретные свойства, которые вам нужны для данного случая использования.',
9292
user,
9393
);
9494
return user;
9595
}
9696
```
9797

98-
Now whenever anyone tries to pass this object to a Client Component, an error will be thrown with the passed in error message instead.
98+
Теперь, когда кто-либо попытается передать этот объект в Client Component, будет выброшена ошибка с переданным сообщением об ошибке.
9999

100100
<DeepDive>
101101

102-
#### Protecting against leaks in data fetching {/*protecting-against-leaks-in-data-fetching*/}
102+
#### Защита от утечек при получении данных {/*protecting-against-leaks-in-data-fetching*/}
103103

104-
If you're running a Server Components environment that has access to sensitive data, you have to be careful not to pass objects straight through:
104+
Если вы работаете в среде Server Components, имеющей доступ к конфиденциальным данным, вы должны быть осторожны, чтобы не передавать объекты напрямую:
105105

106106
```js
107107
// api.js
@@ -117,7 +117,7 @@ import { InfoCard } from 'components.js';
117117

118118
export async function Profile(props) {
119119
const user = await getUser(props.userId);
120-
// DO NOT DO THIS
120+
// НЕ ДЕЛАЙТЕ ЭТОГО
121121
return <InfoCard user={user} />;
122122
}
123123
```
@@ -131,8 +131,7 @@ export async function InfoCard({ user }) {
131131
}
132132
```
133133

134-
Ideally, the `getUser` should not expose data that the current user should not have access to. To prevent passing the `user` object to a Client Component down the line we can "taint" the user object:
135-
134+
В идеале, `getUser` не должен раскрывать данные, к которым текущий пользователь не должен иметь доступа. Чтобы предотвратить передачу объекта `user` в Client Component в дальнейшем, мы можем "пометить" объект пользователя:
136135

137136
```js
138137
// api.js
@@ -141,14 +140,15 @@ import {experimental_taintObjectReference} from 'react';
141140
export async function getUser(id) {
142141
const user = await db`SELECT * FROM users WHERE id = ${id}`;
143142
experimental_taintObjectReference(
144-
'Do not pass the entire user object to the client. ' +
145-
'Instead, pick off the specific properties you need for this use case.',
143+
'Не передавайте весь объект пользователя клиенту. ' +
144+
'Вместо этого выбирайте конкретные свойства, которые вам нужны для данного случая использования.',
146145
user,
147146
);
148147
return user;
149148
}
150149
```
151150

152-
Now if anyone tries to pass the `user` object to a Client Component, an error will be thrown with the passed in error message.
151+
Теперь, если кто-либо попытается передать объект `user` в Client Component, будет выброшена ошибка с переданным сообщением.
153152

154153
</DeepDive>
154+
```

0 commit comments

Comments
 (0)