6 votes

Éviter les XSS avec l'entrée BBCode et la sortie HTML

Je travaille actuellement sur un site web, où les utilisateurs peuvent écrire des articles avec quelques possibilités de format (comme gras, italique, liste...). J'utilise un framework : CodeIgniter.

Je suis un débutant, et j'ai entendu des choses sur les XSS. Je voudrais savoir ce que vous pensez de ma mise en œuvre. J'ai lu ce sujet : Quelle est la meilleure méthode pour assainir les entrées des utilisateurs avec PHP ?

1) L'utilisateur écrit son article, le met en forme avec le BBCode. J'utilise SCEditor.

2) Lorsque je l'enregistre dans la base de données, j'utilise htmlspecialchars() pour filtrer toute balise HTML suspecte. Suis-je censé faire cela lorsque je sauvegarde les données, ou lorsque j'affiche les données ?

3) Lorsque je veux afficher l'article sur le site web (pour d'autres utilisations par exemple), je convertis les balises BBCode en balises HTML.

Est-ce une bonne façon de faire ? Est-ce que j'évite les XSS ?

Je suis évidemment ouvert aux suggestions et aux conseils.

Merci pour vos réponses

2voto

Mehdi Jalal Points 1644

Codeigniter pour la validation a une propriété xss qui fera tout ce personnel

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');

consultez la validation de formulaire Codeigniter :

http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

2voto

user2417012 Points 33

Je "trouve et remplace" en utilisant PHP, mais je ne pense pas que ce soit la manière la plus efficace de le faire.

<?php
    $malicious = "<script>alert(1)</script>";
    $malicious = str_ireplace("<", "", $malicious);
    $malicious = str_ireplace(">", "", $malicious);
    echo $malicious;
?>

0voto

Dibsyhex Points 82
<?php
$malicious = "<script>alert(1)</script>";
$malicious = strip_tags($malicious);
$malicious = htmlentities($malicious, ENT_QUOTES);
echo $malicious;
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X