Question

J'expérimente avec la création d'un système de commentaires. J'utilise php-oEmbed de classe et HTML Purifier . Quel filtre puis-je utiliser pour faire en sorte que les commentaires sont en sécurité à insérer dans ma base de données? Je sais que vous pouvez utiliser des filtres tels que PHP FILTER_SANITIZE_STRING, mais ceux-ci ne transformer le code HTML en entités?

Aussi, si vous utilisez quelque chose comme le éditeur ADM , avez-vous alors d'utiliser quelque chose sur la côté client aussi bien (comme PHP Markdown ) pour vous assurer qu'il est en sécurité?

Était-ce utile?

La solution

Fondamentalement, vous devez nettoyer l'entrée utilisateur chaque fois que vous envoyez quelque part.

Lorsque vous mettez dans votre base de données dont vous avez besoin pour éviter l'injection SQL en citant des caractères spéciaux SQL (déclarations préparées feront pour vous). Lorsque vous envoyez à un navigateur que vous devez échapper les caractères spéciaux HTML (PHP a des fonctions pour le faire) pour empêcher l'injection de script.

Il peut y avoir d'autres endroits où vous avez besoin pour échapper à des caractères spéciaux, aussi. Par exemple, si vous envoyez les commentaires à un script Bash sur le serveur pour faire une sorte de traitement. Dans ce cas, vous auriez besoin de citer ou échapper à des caractères spéciaux spécifiques Bash.

Il est important de ne pas citer / échapper à la scène mal: par exemple, ne pas échapper à des entités HTML quand vous le mettre dans la base de données, sauf si vous êtes absolument sûr de ce que vous faites. Il est très facile d'échapper accidentellement les choses à nouveau lorsque vous tirez hors de la base de données et se préparer à l'envoyer à un navigateur, ou non échapper à des choses du tout si vous envoyez un message d'erreur si la connexion de base de données échoue (cela pourrait provoquer une vulnérabilité XSS ). Est-ce que votre fuite au dernier moment et vous très probablement éviter ces pièges.

Autres conseils

Vous n'avez pas besoin d'utiliser un filtre pour l'injection SQL. Une solution préférable est d'utiliser . Par exemple, AOP fournit PDOStatement .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top