Passer au contenu principal

Ce que fait réellement le code

Vingt mécanismes vérifiés dans le code le 16-09-2026. Une phrase pour chacun.

Vérifié par rapport au code le 16-09-2026

  1. Chaque requête de base de données passe par une extension Prisma qui la lie à l'organisation de la demande, et une requête sans contexte d'organisation échoue au lieu de renvoyer des lignes.

  2. Les clés TOTP et les jetons de fournisseurs tiers sont stockés chiffrés avec AES-256-GCM, avec un trousseau qui permet la rotation des clés sans perdre l'accès aux données existantes.

  3. Chaque réponse HTML reçoit une Content-Security-Policy avec un nonce aléatoire par requête, et un script inline sans ce nonce ne s'exécute pas.

  4. Chaque appel modifiant l'état et transportant une session d'équipe doit envoyer un jeton CSRF correspondant au cookie, et cette vérification ne peut pas être désactivée en production.

  5. Le lien d'un reçu de validation est signé avec HMAC-SHA256, la signature est vérifiée avant toute lecture de la base de données, et chaque échec renvoie la même erreur 404.

    Un lien de partage est un jeton aléatoire de 32 octets dont seul le SHA-256 est stocké, avec une expiration, un mot de passe facultatif et une révocation immédiate ; un lien révoqué, expiré ou inconnu renvoie la même erreur 404.

  6. Chaque fichier importé est analysé avec ClamAV sur une machine virtuelle privée au sein du VPC avant qu'un rendu n'en soit généré, et tout fichier sans verdict sain est bloqué et non diffusé.

    Les fichiers de plus de 2 GiB sont bloqués et non analysés. Un fichier bloqué n'est pas diffusé.

  7. Un client accède au portail sans compte, par code, lien, téléphone ou e-mail ; seul un HMAC du code ou du jeton est stocké, un accès expire (30 jours par défaut) et la révocation déconnecte tous les appareils en moins de deux minutes.

  8. Le journal d'activité est en ajout seul dans l'application : aucun chemin de code ne met à jour ni ne supprime de ligne d'audit, et une étape de CI échoue à toute tentative d'en ajouter un.

  9. Le débit de chaque route d'API est limité par utilisateur ou par IP cliente via un compteur Redis partagé entre les instances ; si Redis est indisponible, la limite est réduite à un tiers par instance au lieu d'être levée.

  10. La session est un cookie JWT signé (HS256) avec HttpOnly, Secure et SameSite=Lax, expire après deux heures d'inactivité et peut être révoquée sur tous les appareils à la fois ; les mots de passe sont stockés sous forme de hachages scrypt, et les codes de récupération MFA sont stockés uniquement sous forme de HMAC.

  11. Le portail client, les liens de partage, les reçus, l'acceptation d'invitation ainsi que les pages de finalisation d'inscription et de réinitialisation de mot de passe portent la balise noindex, et robots.txt interdit l'accès à /api/, /admin, /app et /coupons.

  12. Le propriétaire d'un espace de travail exporte les données et supprime l'espace de travail ou son propre compte sans nous le demander ; la suppression bloque immédiatement l'accès, et l'effacement définitif s'exécute automatiquement après 30 jours, le délai inscrit dans les conditions d'utilisation, la politique de confidentialité et le DPA.

  13. Les secrets sont montés depuis Secret Manager au moment du déploiement, validés au démarrage (longueur minimale, valeurs d'exemple refusées, la clé de chiffrement doit comporter 32 octets aléatoires) et masqués dans les journaux et les rapports d'erreur.

  14. Les appels planifiés sont authentifiés par une signature HMAC-SHA256 dans une fenêtre de cinq minutes ou par un jeton Google OIDC, et tout secret Bearer statique est refusé en production.

  15. Chaque requête sortante vers une adresse fournie par l'utilisateur (imports Google Drive, webhooks) est vérifiée par rapport aux plages d'adresses privées, y compris après les redirections et au moment de la connexion.

  16. Le corps d'une requête API est limité à 1 Mio et vérifié par rapport à un schéma strict qui rejette les champs inconnus avant que le code ne le traite.

  17. Le type de fichier est déterminé à partir des octets eux-mêmes plutôt que de la déclaration du navigateur, et tout fichier dépassant le quota du forfait ou la limite par fichier est refusé avant le téléversement.

  18. Chaque chemin d'objet est vérifié par rapport au préfixe de l'organisation avant d'être signé, lu ou supprimé, et les fichiers sont servis via des URL signées à durée limitée (6 heures pour la visualisation, 5 minutes pour le téléchargement).

  19. Les propositions de l'IA sont stockées en tant que propositions et appliquées uniquement après validation par une personne, et le code de l'IA ne peut pas ouvrir de scope système sur les données client ; un contrôle CI l'impose.

  20. Chaque déploiement passe d'abord la suite complète de tests avec couverture, les barrières de code et npm audit au niveau élevé ; un déploiement en production passe également par un canary avec des sondes de disponibilité.

Où tournent les serveurs

Les serveurs, la base de données et les fichiers de Tasked sont hébergés dans la région Google Cloud europe-west1 (Belgique).

Les sous-traitants (e-mail, SMS, paiements, rapports d'erreurs, fournisseurs d'IA) et Google Analytics, qui mesure l'utilisation du site et de l'application, traitent les données en dehors de cette région.

Vos responsabilités

  • Les liens du portail, les liens de partage et les liens de reçu sont des identifiants au porteur : quiconque les détient peut y accéder.
  • Le MFA est optionnel par compte, il n'est pas obligatoire pour tous les comptes.
  • Un fichier bloqué nécessite l'action d'un membre de l'espace de travail.
  • Les données supprimées peuvent être restaurées pendant 30 jours, après quoi elles sont définitivement effacées.

Commencer sans carte

Quatorze jours, toutes fonctionnalités incluses. Créez un espace de travail, expliquez à l'IA comment vous travaillez et invitez un client à valider.

Une question ? Écrivez-nous

Nous répondons directement depuis le site quand nous le pouvons, et une personne prend le relais si nécessaire. Pas de liste de diffusion.