<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// La ligne de séparation entre le début de l'article et le texte principal</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<hr>"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
utiliser getmyinode Jugement PHP Quelles sont les méthodes pour savoir si le script est déplacé ou remplacé?
exister PHP Pendant le développement et le déploiement des scripts,Assurer l'intégrité du script et la stabilité de l'emplacement est très important。尤其是exister某些对安全性和可靠性要求较高的场景下,Les développeurs peuvent vouloir détecter si le fichier de script est déplacé、Remplacer ou altérer。PHP Fournit une fonction intégrée </span><span><span class="hljs-title function_ invoke__">getmyinode</span></span><span>(),Il peut obtenir le script d'exécution actuel inode numéro de série,Cela aide à détecter le statut de fichier。
Qu'est-ce que inode?
inode C'est un concept important dans le système de fichiers,它是操作系统utiliser来标识文件的一个唯一标识符。Même si le nom de fichier change,Tant que le contenu et l'emplacement du fichier ne sont pas déplacés,inode Le nombre reste généralement le même。au contraire,Si le fichier est remplacé ou déplacé vers un autre système de fichiers,inode Le nombre peut changer。
</span><span><span class="hljs-title function_ invoke__">getmyinode</span></span><span>() Fonction Introduction
</span><span><span class="hljs-title function_ invoke__">getmyinode</span></span><span>() 函数utiliser于返回当前运行脚本文件的 inode Nombre,它的utiliser法非常简单:
```php
</span><span><span class="hljs-variable">$inode</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getmyinode</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le script actuel inode numéro de série是: "</span></span><span> . </span><span><span class="hljs-variable">$inode</span></span><span>;
</span></span>
Avec ce numéro, nous pouvons dire si le script a été déplacé ou remplacé. Les idées spécifiques sont les suivantes:
Lorsque le script est exécuté pour la première fois, la valeur renvoyée par getMyInode () est stockée dans un emplacement sûr (comme une base de données ou un fichier de cache).
Dans les exécutions ultérieures, recueillez l'inode du script actuel et comparez-le avec celui précédemment enregistré.
Si l'inode est incohérent, cela signifie que le script peut être déplacé ou remplacé.
Exemple de code
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Supposons une économie inode Chemin de fichier</span></span><span>
</span><span><span class="hljs-variable">$inodeFile</span></span><span> = </span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">'/script_inode.txt'</span></span><span>;
</span><span><span class="hljs-comment">// Obtenez le script actuel inode</span></span><span>
</span><span><span class="hljs-variable">$currentInode</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getmyinode</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$inodeFile</span></span><span>)) {
</span><span><span class="hljs-variable">$savedInode</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$inodeFile</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$savedInode</span></span><span> != </span><span><span class="hljs-variable">$currentInode</span></span><span>) {
</span><span><span class="hljs-comment">// inode changement,Le script est déplacé ou remplacé</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"avertir:Le fichier de script peut avoir été déplacé ou remplacé!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le fichier de script n'a pas été déplacé ou remplacé。"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-comment">// Première manche,garder inode</span></span><span>
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$inodeFile</span></span><span>, </span><span><span class="hljs-variable">$currentInode</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"已garder当前脚本 inode Nombre。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Notes et limitations
Le numéro Inode n'est unique que dans le même système de fichiers. Si le fichier est déplacé vers une autre partition ou disque, le numéro Inode changera inévitablement.
Différents systèmes d'exploitation et systèmes de fichiers prennent en charge l'inode différemment. Par exemple, les systèmes Windows n'utilisent pas le concept d'Inode, et le résultat renvoyé par getMyInode () peut être invalide.
Les modifications d'Inode ne peuvent pas déterminer à 100% si le contenu du fichier a été falsifié. Le fichier a été modifié mais non déplacé. Inode ne change généralement pas. Si une vérification plus stricte est requise, elle peut être utilisée en conjonction avec le hachage du fichier (tel que md5_file).
Résumer
Utilisez la fonction getMyInode () pour déterminer facilement et rapidement si le fichier de script PHP a été déplacé ou remplacé, et est un moyen simple et efficace de détecter les modifications de l'emplacement du fichier. La combinaison de stockage persistant et d'inspections régulières peut améliorer la sécurité et la fiabilité des scripts dans une certaine mesure. Cependant, il est également nécessaire de combiner d'autres mesures de sécurité pour une protection complète.
<hr> `` `