J'ai travaillé sur une application qui permettra de construire des extensions tierces pour étendre les fonctionnalités de l'application. Tout cela en PHP, bien sûr. Je voulais ajouter un peu de remplissage de sécurité en exécutant des fichiers dans un certain répertoire grâce à une fonction de somme de contrôle. Si le fichier ne passe pas la somme de contrôle, le fichier n'est pas "inclus", l'administrateur de cette installation est averti et le module est désactivé jusqu'à ce que l'administrateur agisse (ré-active et enregistre l'exception, ou réinstalle le module) .PHP Checksum before include()
Le problème que j'ai en ce moment est de pouvoir exécuter cette somme de contrôle chaque fois qu'un utilisateur exécute la fonction include()
. Je préfère ne pas les faire exécuter deux fonctions dos à dos juste pour inclure un fichier, mais si je dois le faire. Toutes les extensions tierces ne seront pas très disposées à exécuter deux fonctions (quelque chose comme if(checksum_function($bleh)) include($bleh);
), et même si elles l'étaient, il serait beaucoup plus facile (et plus sûr) d'exécuter la somme de contrôle chaque fois que include()
est exécutée, au lieu de doubler le nombre de lignes pour les instructions include()
. J'ai fait quelques recherches et n'ai pas trouvé grand-chose. Des idées? Merci d'avance!
Une collision crc peut être calculée en utilisant l'algèbre. – rook
Merci beaucoup Pekka. J'allais utiliser md5 pour mes sommes de contrôle, mais j'imagine que ce serait encore plus cher. Je n'avais pas pensé à utiliser __autoload(). Je pourrais mettre de côté cette idée, car elle pourrait être très coûteuse une fois que tout le reste aura été mis en œuvre. Cependant, je vais certainement jouer avec __autoload() un peu. Merci! – Swivel
@The Rook vous voulez dire pour un script malveillant de réparer le fichier afin qu'il passe le test? Dans la plupart des cas, je pense que cela ne constituera pas un danger car si un attaquant a) est conscient du mécanisme de sécurité et b) peut écrire des fichiers sur l'espace web en question, tout est perdu de toute façon. Toujours, bon point. –