Skip to content

Commit 7d0b79b

Browse files
authored
Merge pull request #602 from reactjs/copy/experimental_taintObjectReference
Translate the "experimental_taintObjectReference" page
2 parents 4924c4d + b8005d8 commit 7d0b79b

File tree

2 files changed

+35
-34
lines changed

2 files changed

+35
-34
lines changed

TRANSLATORS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ Voici la liste par ordre alphabétique (prénom, nom). **🙏🏻 Mille mercis
8989
<li><a href="https://fr.react.dev/reference/react/useRef"><code>useRef</code></a></li>
9090
<li><a href="https://fr.react.dev/reference/react/useSyncExternalStore"><code>useSyncExternalStore</code></a></li>
9191
<li><a href="https://fr.react.dev/reference/react/useTransition"><code>useTransition</code></a></li>
92+
<li><a href="https://fr.react.dev/reference/react/experimental_taintObjectReference"><code>experimental_taintObjectReference</code></a></li>
9293
<li><a href="https://fr.react.dev/reference/react/Suspense"><code>&lt;Suspense&gt;</code></a></li>
9394
<li><a href="https://fr.react.dev/reference/react/cache"><code>cache</code></a></li>
9495
<li><a href="https://fr.react.dev/reference/react/forwardRef"><code>forwardRef</code></a></li>

src/content/reference/react/experimental_taintObjectReference.md

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,103 +4,103 @@ title: experimental_taintObjectReference
44

55
<Wip>
66

7-
**This API is experimental and is not available in a stable version of React yet.**
7+
**Cette API est expérimentale : elle n’a donc pas encore été livrée dans une version stable de React.**
88

9-
You can try it by upgrading React packages to the most recent experimental version:
9+
Vous pouvez l'essayer en mettant à jour vos modules React afin d'utiliser la version expérimentale la plus récente :
1010

1111
- `react@experimental`
1212
- `react-dom@experimental`
1313
- `eslint-plugin-react-hooks@experimental`
1414

15-
Experimental versions of React may contain bugs. Don't use them in production.
15+
Les versions expérimentales de React sont susceptibles de contenir des bugs. Veillez donc à ne pas les utiliser en production.
1616

17-
This API is only available inside React Server Components.
17+
Cette API n'est disponible qu'au sein des React Server Components.
1818

1919
</Wip>
2020

2121

2222
<Intro>
2323

24-
`taintObjectReference` lets you prevent a specific object instance from being passed to a Client Component like a `user` object.
24+
`taintObjectReference` vous permet d'empêcher qu'une instance objet précise soit passée à un Composant Client, comme par exemple un objet `user`.
2525

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

30-
To prevent passing a key, hash or token, see [`taintUniqueValue`](/reference/react/experimental_taintUniqueValue).
30+
Pour empêcher le passage d'une clé, d'un hash ou d'un jeton, utilisez [`taintUniqueValue`](/reference/react/experimental_taintUniqueValue).
3131

3232
</Intro>
3333

3434
<InlineToc />
3535

3636
---
3737

38-
## Reference {/*reference*/}
38+
## Référence {/*reference*/}
3939

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

42-
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:
42+
Appelez `taintObjectReference` avec un objet pour indiquer à React qu'il ne doit pas permettre le passage de cet objet tel quel vers le côté client :
4343

4444
```js
45-
import {experimental_taintObjectReference} from 'react';
45+
import { experimental_taintObjectReference } from 'react';
4646

4747
experimental_taintObjectReference(
48-
'Do not pass ALL environment variables to the client.',
48+
'Ne passez pas TOUTES les variables d’environnement au client.',
4949
process.env
5050
);
5151
```
5252

53-
[See more examples below.](#usage)
53+
[Voir plus d'exemples ci-dessous](#usage).
5454

55-
#### Parameters {/*parameters*/}
55+
#### Paramètres {/*parameters*/}
5656

57-
* `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.
57+
* `message` : le message que vous souhaitez afficher si l'objet est passé à un Composant Client. Ce message fera partie de l'erreur qui sera levée si l'objet est passé à un Composant Client.
5858

59-
* `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.
59+
* `object` : l'objet a « ternir ». Les fonctions et instances de classes peuvent être passées en tant qu'`object` à `taintObjectReference`. React empêche d'entrée de jeu leur passage aux Composants Clients, mais ça remplacera le message d'erreur par défaut avec ce que vous aurez passé comme `message`. Notez que lorsqu'une instance précise d'un tableau typé *(Typed Array, NdT)* est passée comme `object` à `taintObjectReference`, les copies de ce tableau typé ne seront quant à elles pas ternies.
6060

61-
#### Returns {/*returns*/}
61+
#### Valeur renvoyée {/*returns*/}
6262

63-
`experimental_taintObjectReference` returns `undefined`.
63+
`experimental_taintObjectReference` renvoie `undefined`.
6464

65-
#### Caveats {/*caveats*/}
65+
#### Limitations {/*caveats*/}
6666

67-
- Recreating or cloning a tainted object creates a new untained object which main contain sensetive 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.
67+
- Recréer ou cloner un objet terni produit un nouvel objet intact, susceptible de contenir des données sensibles. Si par exemple vous avez un objet `user` terni, `const userInfo = {name: user.name, ssn: user.ssn}` ou `{...user}` produiront de nouveaux objets qui ne seront, eux, pas ternis. `taintObjectReference` ne protège que contre les bévues simples lorsque l'objet est passé tel quel à un Composant Client.
6868

6969
<Pitfall>
7070

71-
**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 untained 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.
71+
**Ne comptez pas sur le ternissement pour garantir la sécurité.** Ternir un objet n'empêche pas la fuite de toute donnée dérivée imaginable. Un clone de l'objet terni créera par exemple un objet intact. L'utilisation de données d'un objet terni (ex. `{secret: taintedObj.secret}`) crée une nouvelle valeur, ou un nouvel objet, qui ne sera pas terni·e. Le ternissement est une couche de protection, mais une appli sécurisée aura plusieurs couches de protection complémentaires, des API soigneusement conçues et des mécanismes d'isolation en place.
7272

7373
</Pitfall>
7474

7575
---
7676

77-
## Usage {/*usage*/}
77+
## Utilisation {/*usage*/}
7878

79-
### Prevent user data from unintentionally reaching the client {/*prevent-user-data-from-unintentionally-reaching-the-client*/}
79+
### Empêcher des données utilisateur d'atteindre le client par inadvertance {/*prevent-user-data-from-unintentionally-reaching-the-client*/}
8080

81-
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 this mistakes happening down the line we can "taint" the user object in our data API.
81+
Un Composant Client ne devrait jamais accepter des objets comportant des données sensibles. Dans l'idéal, les fonctions de chargement de données ne devraient pas exposer des données auxquelles l'utilisateur actif n'a pas accès. Mais des erreurs peuvent survenir lors d'une refonte du code. Pour se protéger contre des erreurs en aval nous pouvons « ternir » l'objet utilisateur dans notre API de données.
8282

8383
```js
84-
import {experimental_taintObjectReference} from 'react';
84+
import { experimental_taintObjectReference } from 'react';
8585

8686
export async function getUser(id) {
8787
const user = await db`SELECT * FROM users WHERE id = ${id}`;
8888
experimental_taintObjectReference(
89-
'Do not pass the entire user object to the client. ' +
90-
'Instead, pick off the specific properties you need for this use case.',
89+
'Ne passez pas l’objet utilisateur entier au client. ' +
90+
'Récupérez plutôt les propriétés spécifiques à votre scénario.',
9191
user,
9292
);
9393
return user;
9494
}
9595
```
9696

97-
Now whenever anyone tries to pass this object to a Client Component, an error will be thrown with the passed in error message instead.
97+
Désormais, si un code serveur quelconque essaie de passer cet objet à un Composant Client, une erreur sera levée avec le message d'erreur fourni.
9898

9999
<DeepDive>
100100

101-
#### Protecting against leaks in data fetching {/*protecting-against-leaks-in-data-fetching*/}
101+
#### Se protéger contre les fuites lors du chargement de données {/*protecting-against-leaks-in-data-fetching*/}
102102

103-
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:
103+
Si votre environnement de Composants Serveur a accès à des données sensibles, vous devez être attentif·ve à ne pas passer des objets directement :
104104

105105
```js
106106
// api.js
@@ -116,7 +116,7 @@ import { InfoCard } from 'components.js';
116116

117117
export async function Profile(props) {
118118
const user = await getUser(props.userId);
119-
// DO NOT DO THIS
119+
// NE FAITES PAS ÇA
120120
return <InfoCard user={user} />;
121121
}
122122
```
@@ -130,24 +130,24 @@ export async function InfoCard({ user }) {
130130
}
131131
```
132132

133-
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:
133+
Dans l'idéal, `getUser` ne devait pas exposer de données auxquelles l'utilisateur courant n'a pas accès. Pour empêcher le passage en aval de l'objet `user` à un Composant Client, nous pouvons décider de « ternir » cet objet :
134134

135135

136136
```js
137137
// api.js
138-
import {experimental_taintObjectReference} from 'react';
138+
import { experimental_taintObjectReference } from 'react';
139139

140140
export async function getUser(id) {
141141
const user = await db`SELECT * FROM users WHERE id = ${id}`;
142142
experimental_taintObjectReference(
143-
'Do not pass the entire user object to the client. ' +
144-
'Instead, pick off the specific properties you need for this use case.',
143+
'Ne passez pas l’objet utilisateur entier au client. ' +
144+
'Récupérez plutôt les propriétés spécifiques à votre scénario.',
145145
user,
146146
);
147147
return user;
148148
}
149149
```
150150

151-
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+
Désormais, si un code serveur quelconque essaie de passer cet objet à un Composant Client, une erreur sera levée avec le message d'erreur fourni.
152152

153153
</DeepDive>

0 commit comments

Comments
 (0)