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
# Éviter de publier les secrets dans le registre npm
2
2
3
-
### One Paragraph Explainer
4
-
Precautions should be taken to avoid the risk of accidentally publishing secrets to public npm registries. An `.npmignore`file can be used to blacklist specific files or folders, or the `files`array in `package.json`can act as a whitelist.
3
+
### Un paragraphe d'explication
4
+
Des précautions doivent être prises pour éviter de publier accidentellement des secrets dans un registre public npm. Un fichier `.npmignore`peut être utilisé pour ignorer des fichiers ou dossiers spécifiques, ou le tableau `files`du `package.json`peut être utilisé comme une liste blanche.
5
5
6
-
To gain a view of what npm publish will really publish to the registry, the`--dry-run`flag can be added the npm publish command to provide a verbose view of the tarbell package created.
6
+
Pour savoir ce que npm publish va vraiment publier sur le registre, l'option`--dry-run`peut être ajoutée à la commande npm publish pour obtenir un résultat verbeux du package crée.
7
7
8
-
It is important to note that if a project is utilising both `.npmignore`and`.gitignore` files, everything which isn't in `.npmignore`is published to the registry(i.e. the `.npmignore`file overrides the `.gitignore`). This condition is a common source of confusion and is a problem that can lead to leaking secrets. Developers may end up updating the `.gitignore` file, but forget to update `.npmignore` as well, which can lead to a potentially sensitive file not being pushed to source control, but still being included in the npm package.
8
+
Il est important de noter que si un projet utilise à la fois des fichiers `.npmignore`et`.gitignore`, tout ce qui n'est pas dans `.npmignore`est publié dans le registre (c'est-à-dire que le fichier `.npmignore`écrase `.gitignore`). Cette condition est communément une source de confusion et un problème qui peut mener à la fuite de secrets. Les développeurs ont l'habitude de mettre à jour le fichier `.gitignore`, mais peuvent oublier de faire de même avec `.npmignore`, ce qui peut conduire à ce qu'un potentiel fichier sensible ne soit pas envoyé sur l'outil de gestion des versions, mais soit toujours inclus dans le package npm.
9
9
10
-
### Code example
11
-
Example .npmignore file
10
+
### Exemple de code
11
+
Fichier d'exemple .npmignore
12
12
```
13
13
#tests
14
14
test
@@ -24,7 +24,7 @@ coverage
24
24
25
25
```
26
26
27
-
Example use of files array in package.json
27
+
Exemple d'usage du tableau files de package.json
28
28
29
29
```
30
30
{
@@ -35,10 +35,10 @@ Example use of files array in package.json
35
35
}
36
36
```
37
37
38
-
### What other bloggers say
38
+
### Ce que disent les autres blogueurs
39
39
40
-
From the blog by[Liran Tal & Juan Picado at Snyk](https://snyk.io/blog/ten-npm-security-best-practices/):
41
-
> ... Another good practice to adopt is making use of the files property in package.json, which works as a whitelist and specifies the array of files to be included in the package that is to be created and installed (while the ignore file functions as a blacklist). The files property and an ignore file can both be used together to determine which files should explicitly be included, as well as excluded, from the package. When using both, the former the files property in package.json takes precedence over the ignore file.
40
+
Extrait du blog de[Liran Tal & Juan Picado sur Snyk](https://snyk.io/blog/ten-npm-security-best-practices/):
41
+
> ... Une autre bonne pratique à adopter est d'utiliser la propriété files du package.json, qui fonctionne comme une liste blanche et spécifie un tableau de fichiers à inclure dans le package qui sera créé et installé (tandis que le fichier .npmignore fonctionne comme une liste noire). La propriété files et le fichier .npmignore peuvent être utilisés ensemble pour déterminer explicitement quels fichiers doivent être inclus, et exclus, du package. Quand les deux sont utilisés, la propriété files du package.json a la priorité sur le fichier .npmignore.
42
42
43
-
From the [npm blog](https://blog.npmjs.org/post/165769683050/publishing-what-you-mean-to-publish)
44
-
> ... When you run npm publish, npm bundles up all the files in the current directory. It makes a few decisions for you about what to include and what to ignore. To make these decisions, it uses the contents of several files in your project directory. These files include .gitignore, .npmignore, and the files array in the package.json. It also always includes certain files and ignores others.
43
+
Extrait du blog de [blog de npm](https://blog.npmjs.org/post/165769683050/publishing-what-you-mean-to-publish)
44
+
> ... Quand vous exécutez npm publish, npm met dans le package l'ensemble des fichiers du répertoire courant. Il prend quelques décisions pour vous à propos de ce qu'il faut inclure et de ce qu'il faut ignorer. Pour prendre ces décisions, il utilise le contenu de plusieurs fichiers dans le répertoire de votre projet. Ces fichiers incluent .gitignore, .npmignore, et le tableau files dans package.json. De plus, il inclut toujours certains fichiers et en ignore d'autres.
`eval()`, `setTimeout()`, `setInterval()`, and`new Function()`are global functions, often used in Node.js, which accept a string parameter representing a JavaScript expression, statement, or sequence of statements. The security concern of using these functions is the possibility that untrusted user input might find its way into code execution leading to server compromise, as evaluating user code essentially allows an attacker to perform any actions that you can. It is suggested to refactor code to not rely on the usage of these functions where user input could be passed to the function and executed.
5
+
`eval()`, `setTimeout()`, `setInterval()`, et`new Function()`sont des fonctions globales, souvent utilisées dans Node.js, qui acceptent comme paramètre une châine de caractères représentant une expression Javascript, une déclaration ou une suite de déclarations. Le problème de sécurité que pose ces fonctionnalités est la possibilité que les entrées d'un utilisateur non fiable se retrouvent dans le code exécuté, ce qui pourrait compromettre le serveur, l'évaluation du code permettant essentiellement à un attaquant d'effectuer toutes les actions possibles. Il est suggéré de refactoriser le code pour ne pas se fier à ces fonctions où les entrées de l'utilisateur pourraient y être passées et exécutées.
6
6
7
-
### Code example
7
+
### Exemple de code
8
8
9
9
```javascript
10
-
//example of malicious code which an attacker was able to input
10
+
//exemple d'un code malicieux qui permettait à un attaquant d'entrer
From the Essential Node.js Security book by [Liran Tal](https://leanpub.com/nodejssecurity):
20
-
> The eval() function is perhaps of the most frowned upon JavaScript pieces from a security
21
-
perspective. It parses a JavaScript string as text, and executes it as if it were a JavaScript code.
22
-
Mixing that with untrusted user input that might find it’s way to eval() is a recipe for disaster that
23
-
can end up with server compromise.
19
+
Extrait du livre « Essential Node.js Security » de [Liran Tal](https://leanpub.com/nodejssecurity):
20
+
> La fonction eval() est peut-être l'une des plus mal vues dans JavaScript du point de vue de la sécurité. Elle analyse une chaîne de caractère JavaScript comme du texte, et l'exécute comme si c'était du code JavaScript. En mélangeant cela avec des entrées d'utilisateurs non fiables qui pourraient trouver un moyen d'accéder à la fonction eval(), on obtient la recette d'un désastre qui peut finir par compromettre le serveur.
0 commit comments