Comment automatiser la modération de contenu avec Transloadit (NSFW)
La sécurité doit être au premier plan des préoccupations de chaque développeur aujourd’hui. Malheureusement, tous les utilisateurs n’ont pas de bonnes intentions lorsqu’ils téléversent des fichiers, et il est important de mettre en place des mesures pour traiter ce type de fichiers. Aujourd’hui, nous allons examiner plusieurs approches que vous pouvez adopter pour empêcher différents types de fichiers malveillants d’atteindre vos serveurs et vos utilisateurs finaux.
Pourquoi la modération de contenu est-elle importante ?
La modération de contenu est essentielle pour toute entreprise en ligne. Les utilisateurs ne veulent pas être exposés malgré eux à des contenus choquants, et les annonceurs ne veulent pas apparaître à côté. Une modération de contenu efficace protège à la fois votre marque et vos utilisateurs, mais recruter une équipe de modérateurs à temps plein peut coûter cher. Transloadit peut vous aider à repérer les contenus indésirables et les logiciels malveillants, tandis que les métadonnées et les empreintes de hachage des fichiers fournissent des signaux supplémentaires pour votre processus de modération. Ces vérifications ne garantissent ni l’innocuité d’un fichier ni l’autorisation de l’utiliser. Voyons comment 👇
Rejeter automatiquement le contenu NSFW
Vous pouvez utiliser notre Robot /image/describe pour générer une liste d’étiquettes à partir de l’image fournie, puis écarter les fichiers qui contiennent des étiquettes telles que violence graphique, symboles haineux ou nudité.
Vous pouvez consulter la liste complète des étiquettes fournies par AWS et par GCP.
Les étiquettes des fournisseurs peuvent changer. Avant de vous fier à ce filtre, examinez la sortie /image/describe
pour des images de test représentatives en utilisant format: "json" dans une Assembly de diagnostic
distincte. Adaptez votre filtre aux étiquettes réellement renvoyées, puis utilisez format: "meta" pour
la chaîne de filtrage ci-dessous.
Voyons maintenant un Template qui utilise cette approche :
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"described": {
"use": ":original",
"robot": "/image/describe",
"explicit_descriptions": true,
"format": "meta",
"granularity": "list",
"provider": "aws"
},
"filtered": {
"use": "described",
"robot": "/file/filter",
"result": true,
"declines": [
["${file.meta.descriptions}", "includes", "Hate Symbols"],
["${file.meta.descriptions}", "includes", "Explicit Nudity"],
["${file.meta.descriptions}", "includes", "Visually Disturbing"]
],
"error_msg": "One file contains explicit content!",
"error_on_decline": true
}
}
}
Ici, nous générons une liste de descripteurs pour notre image, et si notre filtre détecte l’une de nos catégories de premier niveau dans cette liste, le fichier sera rejeté et notre Assembly arrêtée. Ne publiez que les résultats filtrés, et non le fichier téléversé d’origine, et seulement une fois l’Assembly réussie. Les étiquettes automatiques peuvent laisser passer du contenu ou signaler à tort des images acceptables. Choisissez donc les catégories et les règles de relecture humaine adaptées aux exigences de votre application.
Vérifier les métadonnées de droits d’auteur
Les métadonnées ne permettent pas d’établir si la personne qui téléverse une image a l’autorisation de l’utiliser. Les informations de droits d’auteur peuvent être absentes, supprimées ou inexactes, et une mention de droits d’auteur ne rend pas en soi un téléversement non autorisé. Masquer une vérification des métadonnées ne constitue pas une mesure de sécurité.
Le Template suivant illustre uniquement un filtre de métadonnées : les fichiers dont le champ de droits d’auteur n’est pas vide sont exclus de ses résultats, tandis que les fichiers dépourvus de ce champ passent le filtre. Le fait qu’un fichier passe le filtre ne vaut pas autorisation au regard des droits d’auteur. Séparez de cet exemple les vérifications d’autorisation et toute relecture humaine requise ; ne l’utilisez pas comme verdict automatique sur les droits d’auteur.
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"filter": {
"use": ":original",
"robot": "/file/filter",
"result": true,
"accepts": [["${file.meta.copyright}", "empty", ""]],
"error_on_decline": false
}
}
}
Détecter les logiciels malveillants
Naturellement, la dernière chose que vous souhaitez voir vos utilisateurs téléverser, ce sont des logiciels malveillants. Qu’ils atteignent d’autres utilisateurs ou vos machines critiques, il est important que les virus soient arrêtés le plus tôt possible.
Notre Robot /file/virusscan détecte les logiciels malveillants pour vous et annule l’Assembly lorsqu’une analyse détecte une menace. Ne publiez les résultats qu’après une analyse réussie. L’analyse antivirus réduit les risques, mais ne peut pas garantir qu’un fichier est inoffensif ; maintenez vos autres contrôles de téléversement en place. Consultez la documentation du Robot et la page des tarifs pour connaître la disponibilité et les frais actuels.
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"virus_scanned": {
"use": ":original",
"robot": "/file/virusscan",
"result": true,
"error_on_decline": true
}
}
}
Exclure des fichiers connus
Si un utilisateur téléverse des milliers d’exemplaires du même fichier et que, pour une raison ou une autre, celui-ci franchit vos autres couches de défense, vous pouvez calculer l’empreinte du fichier et l’ajouter à une liste de refus. L’exemple suivant rejette un fichier vide à l’aide de son condensé SHA-256. Remplacez ce condensé par le SHA-256 d’un fichier indésirable connu, selon votre propre politique. Modifier les octets d’un fichier modifie son empreinte : une liste de refus par correspondance exacte ne détecte donc pas les copies modifiées.
Voici un Template qui vise précisément à faire cela.
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"hash_files": {
"use": ":original",
"robot": "/file/hash",
"algorithm": "sha256"
},
"filter_files": {
"use": "hash_files",
"robot": "/file/filter",
"result": true,
"error_on_decline": true,
"declines": [["${file.meta.hash}", "===", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"]]
}
}
}
En bref, nous générons une empreinte pour chaque fichier téléversé. Si elle est égale à l’empreinte d’un fichier que nous souhaitons éviter, le fichier ne passera pas le filtre.
Conclusion
Comme vous pouvez le voir, il existe plusieurs approches pour filtrer les téléversements de fichiers. Combinez des vérifications appropriées avec des contrôles d’accès, un stockage sécurisé et une relecture humaine plutôt que de vous fier à un seul signal.
Chez Transloadit, nous cherchons constamment à renforcer la sécurité. Pour votre prochaine lecture, vous pourriez jeter un œil à notre page sur la sécurité pour découvrir certaines des mesures que nous prenons dans ce but.
