Sur ce poste quelqu'un a mentionné dans un commentaire que l'ajout de .:
à la PATH
est une faille de sécurité. L'ajout de .:
à la CLASSPATH
Une variable d'environnement peut-elle également constituer une faille de sécurité ?
Réponse
Trop de publicités?Oui, il peut s'agir d'une faille de sécurité.
Mise en place .:
à l'avant de la CLASSPATH
signifie que Java utilise les classes du répertoire courant avant de chercher dans le reste du répertoire. CLASSPATH
chemins. Cela signifie que .class
dans le répertoire actuel ou ses sous-répertoires seront utilisés à la place de n'importe quelle classe ou interface. Par exemple, si le fichier ./java/lang/String.class
existe, elle sera utilisée à la place de la norme String
classe.
Cela signifie que si vous ne faites pas attention au répertoire courant lorsque vous exécutez un programme Java, ce dernier peut charger des classes malveillantes à la place de n'importe quelle classe.
Pour vous épargner l'effort de vérifier le répertoire courant à chaque fois que vous exécutez un programme Java, vous ne devriez pas configurer le système pour qu'il le fasse par défaut.
Si vous comptez utiliser des classes dans le répertoire courant lorsque vous exécutez un programme Java particulier, vous devriez généralement ignorer le paramètre CLASSPATH
et utiliser le -cp
argument à java
à la place, comme dans :
java -cp ".:…" …
Cela permet d'éviter complètement d'affecter d'autres programmes Java par l'intermédiaire de la fonction CLASSPATH
variable d'environnement. Vous ne devriez le faire que dans les cas où vous savez que les fichiers du répertoire actuel ne sont pas malveillants.