Passer au contenu principal

Security

Ouvrir dans ChatGPT

craftforJ lit et écrit la source du projet auquel il est attaché. Cette page décrit les limites à cet égard et comment confirmer que craftforJ est désactivé dans les builds que vous déployez.

Deux paramètres requis

craftforJ nécessite que les deux éléments suivants soient activés :

  • webforj.debug
  • webforj.devtools.craftforj.enabled

Aucun d'eux ne fait quoi que ce soit seul. Une application qui atteint la production avec le mode débogage activé n'expose pas craftforJ, et une application portant la propriété craftforJ dans un fichier de configuration partagé ne l'expose pas en dehors du mode débogage.

Les projets créés avec startforJ ou à partir d'un archétype webforJ ont les deux paramètres activés, donc craftforJ fonctionne dès le premier lancement. Avant de déployer, passez en revue la liste de contrôle de production ci-dessous.

Accès local par défaut

Seul un navigateur sur la machine exécutant l'application peut accéder à craftforJ. Tout le reste est refusé, et cela s'applique sans aucune configuration de votre part. Pour accéder à craftforJ depuis une autre machine, nommez cette machine dans hosts-allowed. Les adresses sont comparées littéralement, donc un client ne peut pas passer en prétendant être autre chose.

Le caractère générique supprime complètement la restriction

Définir hosts-allowed = "*" signifie que quiconque peut atteindre le port de votre application peut lire et écrire les sources de votre projet. Cela existe pour des environnements scellés, tels qu'un conteneur qui n'est accessible que par vous. Ne l'utilisez nulle part ailleurs.

Aucune surface HTTP ajoutée

craftforJ n'ajoute aucun point de terminaison HTTP, servlet ou filtre à votre application. Il fonctionne sur la connexion que votre application a déjà, donc votre application répond exactement au même ensemble de demandes avec craftforJ activé que sans.

Les requêtes proviennent de votre page

craftforJ n'agit que sur les requêtes provenant de la page que votre serveur a réellement servie. Un script qui trouve son chemin dans la page depuis un autre endroit, comme une dépendance compromise ou quelque chose collé dans une console, ne peut pas activer craftforJ.

Clés API

Votre clé est stockée sur la machine exécutant votre application. L'assistant IA s'exécute dans le navigateur, donc craftforJ doit lui transmettre la clé pour fonctionner, et il conserve cette clé en mémoire aussi longtemps que la page est ouverte. Rien n'est écrit dans le stockage du navigateur, et fermer la page ne laisse rien derrière.

L'assistant communique ensuite avec votre fournisseur depuis le navigateur plutôt que par l'intermédiaire de votre serveur. Il n'y a pas de relais, pas de proxy, pas de télémétrie, et pas de tiers entre les deux.

Ce qui atteint votre fournisseur, c'est la conversation elle-même, qui comprend les parties de votre application que l'assistant a examinées et les captures d'écran qu'il a prises. Prenez cela en compte avant de pointer un modèle hébergé vers une application fonctionnant sur des données réelles. Un modèle fonctionnant localement garde tout sur votre machine.

Ce que craftforJ peut changer

Avec toutes les fonctionnalités activées, craftforJ peut :

  • Lire tout fichier source sous la racine de votre projet
  • Écrire des fichiers source Java, y compris des annotations d'accès aux routes
  • Écrire la feuille de style de votre application
  • Modifier et supprimer des composants dans l'application en cours d'exécution
  • Naviguer dans l'application en cours d'exécution

Chacune de ces fonctionnalités peut être désactivée indépendamment, et chaque écriture sur le disque passe par un diff que vous approuvez.

En production

Laissez craftforJ désactivé. Il est désactivé sauf si vous l'avez activé, donc dans la plupart des cas, il n'y a rien à faire. Pour confirmer :

  1. webforj.devtools.craftforj.enabled n'est pas défini ou est false dans la configuration que vous déployez réellement.
  2. webforj.debug n'est pas défini ou est false dans cette même configuration.
  3. Aucun des deux paramètres n'est défini par une variable d'environnement ou par un profil qui s'applique uniquement en production.
  4. Chargez l'application déployée et confirmez qu'il n'y a pas de déclencheur craftforJ sur la page.

Pour une vue d'ensemble, consultez Renforcement de la production.

Signalement d'un problème de sécurité

Si vous trouvez un problème de sécurité dans craftforJ, signalez-le via la politique de sécurité webforJ plutôt que dans un problème public.