Skip to content

Commit

Permalink
fix: clamav docs
Browse files Browse the repository at this point in the history
  • Loading branch information
matmut7 committed May 2, 2024
1 parent b84d393 commit e9d9396
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions docs/standards/securite.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,15 @@ en fonction.

### ClamAV : scan antivirus de fichiers

:::caution

Ce service de la Fabrique est expérimental. Aucune application ne doit bloquer
sur le scan antivirus car le service pourrait être indisponible.

Pour le moment, il est nécessaire de demander explicitement à l'équipe SRE la création de l'instance associée à votre startup.

:::

Lorsqu'un produit propose à ses utilisateurs de **téléverser des fichiers**, il
est recommandé de **scanner** les fichiers pour y détecter de **potentiels
virus**. Dans ce but, la Fabrique met à disposition un service **ClamAV**.
Expand All @@ -77,41 +86,33 @@ Le service REST utilisé est celui-ci :
<https://github.com/benzino77/clamav-rest-api>.

Il est nécessaire d'envoyer les fichiers à
`http://clamav-rest.clamav.svc/api/v1/scan` encodés avec `multipart/form-data`
`https://antivirus.fabrique.social.gouv.fr/{startup}/api/v1/scan` encodés avec `multipart/form-data`
et sous la clé `FILES`.

:::info

Le service ClamAV n'est accessible que depuis l'intérieur de notre
infrastructure. Un scan ne peut donc être demandé que depuis le backend des
applications, les clients n'y ont pas accès.
applications, le front-end n'y ont pas accès. En outre, lors du développement local, le service n'est pas accessible.

:::

Exemple NodeJS :

```js
const FormData = require("form-data");
const fs = require("fs");

const formData = new FormData();
formData.append("FILES", fs.createReadStream("file1.txt"), "file1.txt");
formData.append("FILES", fs.createReadStream("file2.txt"), "file2.txt");
formData.append("FILES", new Blob([fs.readFileSync("file1.txt")]), "file1.txt");
formData.append("FILES", new Blob([fs.readFileSync("file2.jpg")]), "file2.jpg");

const res = await fetch("http://clamav-rest.clamav.svc/api/v1/scan", {
const res = await fetch("https://antivirus.fabrique.social.gouv.fr/vao/api/v1/scan", {
method: "POST",
body: formData,
headers: formData.getHeaders(),
});
console.log(await res.json());
```

:::caution

Ce service de la Fabrique est expérimental. Aucune application ne doit bloquer
sur le scan antivirus car le service pourrait être indisponible.

:::
console.log(await res.json())
```

## Best practices

Expand Down

0 comments on commit e9d9396

Please sign in to comment.