Skip to main content
Documentation
Centre d’apprentissage

Maîtrisez la modération de contenu grâce à des guides complets, des tutoriels et une documentation API

Liens rapides

Analyse antivirus des fichiers

Discuse analyse les fichiers à la recherche de logiciels malveillants avant qu’ils n’atteignent vos utilisateurs. Il existe deux façons de l’appeler : activer check_antivirus sur POST /api/v2/check pour analyser les URL de documents en plus des autres vérifications, ou utiliser le point de terminaison dédié POST /api/v2/scan pour analyser un seul fichier et obtenir un rapport complet incluant le nom de la menace et le hachage SHA-256.

Pourquoi analyser les fichiers téléversés ?

Le téléversement de fichiers est un vecteur d’attaque courant. Distribuer des logiciels malveillants via votre plateforme met en danger les données de vos utilisateurs, votre réputation et votre propre infrastructure. Analyser chaque fichier avant de le stocker ou de le servir permet de combler cette faille.

Comment fonctionne l’analyse ?

Lorsque vous soumettez l’URL d’un fichier, Discuse télécharge le fichier dans un environnement isolé, l’analyse, puis indique si une menace a été détectée. Les fichiers identiques sont mis en cache, ce qui rend les analyses répétées rapides.

Option 1 : analyser des fichiers dans une requête /check

Transmettez les URL des documents dans content.document_urls et activez check_antivirus. C’est le bon choix lorsque vous modérez un message qui contient également une pièce jointe.

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "content": {
      "document_urls": ["https://example.com/uploaded-file.pdf"]
    },
    "settings": {
      "check_antivirus": true
    }
  }'

Une seule requête accepte jusqu’à 5 URL de documents.

Réponse

{
  "has_violations": true,
  "cached": false,
  "message": "Malware detected in file",
  "results": {
    "hits": true,
    "antivirus": {
      "status": "FOUND",
      "hit": true,
      "details": [
        {
          "type": "malware",
          "details": "Trojan.GenericKD.12345678",
          "result": true
        }
      ]
    }
  }
}

Le résultat antivirus sous results.antivirus comporte trois champs : status, hit et un tableau details. Chaque entrée de details contient type, details (le nom ou le message de la menace), confidence et result.

Option 2 : analyser un seul fichier avec /api/v2/scan

Le point de terminaison d’analyse dédié renvoie un rapport plus détaillé pour un fichier, incluant le nom de la menace, le hachage du fichier et la durée de l’analyse.

curl -X POST https://api.discuse.com/api/v2/scan \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "file_url": "https://example.com/uploaded-file.pdf",
    "file_name": "uploaded-file.pdf"
  }'

Réponse

{
  "hit": true,
  "status": "FOUND",
  "description": "Trojan.GenericKD.12345678",
  "file_name": "uploaded-file.pdf",
  "file_hash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
  "scan_time_ms": 1250
}

Champs de requête /api/v2/scan

Champ Type Notes
api_key string Facultatif dans le corps ; vous pouvez envoyer X-API-Key à la place
file_url string URL du fichier à analyser
file_name string Nom de fichier facultatif pour le rapport

Fournissez file_url. Les données Base64 file_data sont définies dans le schéma, mais ne sont pas encore prises en charge : une requête contenant uniquement file_data renvoie une erreur vous demandant d’utiliser file_url.

Champs de réponse /api/v2/scan

Champ Type Description
hit boolean Vrai lorsqu’un logiciel malveillant a été détecté
status string OK (sain), FOUND (logiciel malveillant) ou ERROR
description string Nom de la menace ou message d’erreur
file_name string Nom du fichier analysé
file_hash string Hachage SHA-256 du fichier
scan_time_ms number Durée de l’analyse en millisecondes

Limites d’utilisation

L’analyse antivirus est disponible uniquement avec les forfaits payants. Chaque fichier analysé est décompté une fois du quota.

Forfait Analyses mensuelles Tarif de dépassement
Basic Non disponible -
Gold 500 0,001 $/analyse
Platinum 1 500 0,00085 $/analyse (15 % de réduction)
Ultimate 3 000 0,00075 $/analyse (25 % de réduction)

Si un projet ne dispose d’aucun abonnement actif, les analyses antivirus sont refusées.

Bonnes pratiques

Analyser avant le stockage

Analysez un fichier avant de le stocker définitivement, afin qu’un fichier infecté n’entre jamais dans votre système :

async function handleFileUpload(fileUrl, fileName) {
  const result = await scanFile(fileUrl, fileName);

  if (result.hit) {
    throw new Error('Infected file detected: ' + result.description);
  }
  await storeFile(fileUrl);
}

Bifurquer selon le statut

Distinguez un fichier sain d’une analyse ayant échoué :

const result = await scanFile(fileUrl, fileName);

switch (result.status) {
  case 'FOUND': await rejectAndNotify(fileUrl, result.description); break;
  case 'ERROR': await quarantineForReview(fileUrl); break;
  case 'OK':    await storeFile(fileUrl); break;
}

Réutiliser des URL cohérentes

Les fichiers identiques sont mis en cache. L’utilisation d’URL de fichiers stables permet aux analyses répétées d’être servies depuis le cache au lieu de retélécharger le fichier.

Exemples d’intégration

Node.js (point de terminaison d’analyse dédié)

async function scanFile(fileUrl, fileName) {
  const response = await fetch('https://api.discuse.com/api/v2/scan', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({ file_url: fileUrl, file_name: fileName })
  });

  return response.json();
}

Python (point de terminaison d’analyse dédié)

import os
import requests

def scan_file(file_url, file_name=None):
    response = requests.post(
        'https://api.discuse.com/api/v2/scan',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.environ['DISCUSE_API_KEY']
        },
        json={'file_url': file_url, 'file_name': file_name}
    )
    return response.json()

Prêt à protéger votre plateforme contre les logiciels malveillants ? Commencez avec Discuse.

Rédigé par Équipe Discuse · Dernière mise à jour June 2026

Articles associés

Analyse de texte et détection du sentiment

Détectez le spam, la toxicité, les grossièretés et analysez le sentiment dans le contenu textuel

Détection NSFW des images

Détectez et filtrez automatiquement les images inappropriées et le contenu pour adultes

Détection du spam

Filtrage du spam basé sur l’AI pour les textes et les messages