2010-08-20 10 views
2

Et je parle (en particulier) des forums ici - [PHP] code ici [/ PHP] - style. Certains forums échappent aux guillemets doubles ou à d'autres "caractères dangereux" et d'autres non.Affichage du code PHP dans une page HTML

Quelle est la meilleure méthode? Qu'est-ce que vous utilisez les gars? Peut-il être fait sans crainte d'injection de code?

Editer: Qui a dit quelque chose sur la réinvention de la roue?

+0

Stack Overflow, en particulier, vous permet d'utiliser '<', '>', et '"' (et, vraisemblablement, d'autres entités HTML). Utilisez ceux-ci, et voyez s'ils fonctionnent sur d'autres forums. –

Répondre

7

Lorsque PHP echo ou print le texte, il ne l'exécute jamais. Cela n'arrive qu'avec eval. Cela signifie que si vous avez fait ceci:

echo '<?php ... ?>'; 

il serait mener à bien à la sortie de la page et ne pas être analysé ou exécuté. Cela signifie que tout ce que vous devez faire est d'échapper aux caractères habituels (<, >, &, etc.) et vous devriez généralement être en sécurité.

3
  1. Il n'y a aucune crainte d'injection de code PHP (sauf si vous faites des choses inhabituelles comme eval'ing modèles HTML) mais toujours une peur de l'injection de code JS, souvent appelé XSS. Et tout danger venant seulement du code JS possible.
  2. Ainsi, il n'y a pas de traitement spécial pour le code PHP, affiché sur une page HTML. Traitez-le comme n'importe quelle autre donnée. <> les supports sont généralement échappés, pour une raison évidente.
  3. Ne pas réinventer la roue. PHP a son highlight_string fonction pour cette
0

Si vous voyez évadé citations sur une page qui est le plus probablement parce que leur script leur a échappé deux fois (par exemple magic_quotes fait une fois, puis mysql_query() à nouveau). Lorsque la désinfection des données est correctement effectuée, les caractères d'échappement ne doivent pas apparaître dans la sortie.