Posté par jseb .
En réponse au lien Against /tmp.
Évalué à 3.
Dernière modification le 26 octobre 2024 à 19:40.
Les arguments avancés contre $$ sont en général (j'ai fait une recherche pour ne pas en oublier):
1) Incohérences et collisions : Si un script utilise $$ pour nommer un fichier temporaire, chaque exécution aura un nom de fichier différent (car le PID change pour chaque exécution). Cela peut provoquer des incohérences si le script s'attend à retrouver ce fichier par la suite.
-> je n'utilise pas $$ directement , je le stocke dans une variable temporaire.
2) Sécurité et vulnérabilité aux attaques : Utiliser $$ dans le nom de fichier peut rendre le script vulnérable aux attaques par liens symboliques. Un attaquant peut deviner le PID du processus et créer un lien symbolique pointant vers Dieu sait quoi.
-> il est vrai, mais mktemp ne protégera pas davantage (voir plus loin)
3) Problèmes de nettoyage : Si le script ne se termine pas correctement, le fichier temporaire créé avec $$ pourrait rester sur le disque. En cas de redémarrage ou de nouvelle exécution du script, un fichier temporaire précédent pourrait être confondu avec celui de la nouvelle exécution, surtout si le PID se reproduit après un certain temps.
-> j'efface toujours $TMP en sortie. Si par le plus grand des hasards mon script plantait, était relancé et que j'avais fait un tour du compteur des PID pour retomber sur le même nom de fichier (si j'arrive à ça, je crois que je vais tenter un loto), ma première écriture dans le fichier va le tronquer si il existait déjà (la première écriture est une redirection simple avec > ).
Maintenant, voyons le cas de mktemp qui est censé compliquer la vie de l'attaquant et être « plus sécurisé ».
Voici un script shell qui ne fait pas grand chose, à part créer un fichier temporaire et passer ensuite son temps à d'obscurs traitements inclusifs.
[^] # Re: mkstemp / mkdtemp
Posté par jseb . En réponse au lien Against /tmp. Évalué à 3. Dernière modification le 26 octobre 2024 à 19:40.
Les arguments avancés contre $$ sont en général (j'ai fait une recherche pour ne pas en oublier):
1) Incohérences et collisions : Si un script utilise $$ pour nommer un fichier temporaire, chaque exécution aura un nom de fichier différent (car le PID change pour chaque exécution). Cela peut provoquer des incohérences si le script s'attend à retrouver ce fichier par la suite.
2) Sécurité et vulnérabilité aux attaques : Utiliser $$ dans le nom de fichier peut rendre le script vulnérable aux attaques par liens symboliques. Un attaquant peut deviner le PID du processus et créer un lien symbolique pointant vers Dieu sait quoi.
3) Problèmes de nettoyage : Si le script ne se termine pas correctement, le fichier temporaire créé avec $$ pourrait rester sur le disque. En cas de redémarrage ou de nouvelle exécution du script, un fichier temporaire précédent pourrait être confondu avec celui de la nouvelle exécution, surtout si le PID se reproduit après un certain temps.
Maintenant, voyons le cas de mktemp qui est censé compliquer la vie de l'attaquant et être « plus sécurisé ».
Voici un script shell qui ne fait pas grand chose, à part créer un fichier temporaire et passer ensuite son temps à d'obscurs traitements inclusifs.
Ce qui donne:
Mais pendant ce temps ...
Et voilà.
Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr