Mysql
 sql >> Base de données >  >> RDS >> Mysql

Markdown (avec strip_tags) est-il suffisant pour stopper les attaques XSS ?

Je pense que supprimer toute balise HTML de l'entrée vous apportera quelque chose d'assez sécurisé - sauf si quelqu'un trouve un moyen d'injecter des données vraiment foirées dans Markdown, ce qui générera une sortie encore plus foirée ^^

Néanmoins, voici deux choses qui me viennent à l'esprit :

Premier : strip_tags n'est pas une fonction miracle :elle a quelques défauts...
Par exemple, elle enlèvera tout après le '<', dans une situation comme celle-ci :

$str = "10 appels is <than 12 apples";
var_dump(strip_tags($str));

La sortie que j'obtiens est :

string '10 appels is ' (length=13)

Ce qui n'est pas très agréable pour vos utilisateurs  :-(


Deuxième : Un jour ou l'autre, vous voudrez peut-être autoriser certaines balises/attributs HTML; ou, même aujourd'hui, vous voudrez peut-être vous assurer que Markdown ne génère pas de balises/attributs HTML.

Vous pourriez être intéressé par quelque chose comme HTMLPurifier  :il vous permet de spécifier les balises et les attributs à conserver, et filtre une chaîne, afin que seuls ceux-ci restent.

Il génère également un code HTML valide -- ce qui est toujours agréable ;-)