2010-12-09 6 views
1

Une de mes variables GET permet à tous les caractères qui peuvent gâcher une URL en les urlencodant. Le problème, c'est que les balises peuvent être passées au script et affichées dans le code HTML, ce qui n'est pas bien! D'autant qu'il s'habitue à lancer un SELECT sur un mysql db.Valider une chaîne GET tout en utilisant des caractères spéciaux?

Alors, que j'utilise en ce moment est un ensemble preg_replace que hashed bandes sur toutes les balises (ci-dessous)

$getstring = preg_replace("/(<\/?)(\w+)([^>]*>)/e","", $getstring); 

Est-ce suffisant ou est-il un grand trou béant que j'ai manqué?

+0

Voulez-vous éliminer les caractères ou leur échapper? – tHeSiD

+0

Qu'en est-il de 'strip_tags'? http://pt2.php.net/manual/fr/function.strip-tags.php – acm

+0

strip_tags !!! oublié de celui-là, comment embarrassant :) bon appel! – Taylor

Répondre

2

htmlspecialchars() permettra des caractères spéciaux à afficher. Les balises HTML s'afficheront en tant que texte normal (c'est-à-dire en mode échappement), donc si quelqu'un a trop de temps, vous pouvez voir ce qu'il a essayé. Si vous voulez filtrer certaines balises après cela, utilisez les tentatives précédentes pour vous guider.

Si vous souhaitez autoriser une mise en forme, utilisez strip_tags avec une liste blanche pour autoriser certaines balises de base. Alternativement, un langage de balisage tel que Markdown (utilisé ici) ou ReMarkable peut être utile, en fonction du niveau technique de l'utilisateur.

Il semble que vous soyez également vulnérable à l'injection SQL. Vous devriez utiliser des requêtes paramétrées dans la mesure du possible, en utilisant mysqli (la question a la balise mysql-query) ou PDO. PDO::prepare() devrait vous mettre au courant à ce sujet.

+0

Si je comprends bien, il veut garder les tags et les afficher après que strip_tags ne le coupe pas ... comme pour le prepare(), bon point! – Catalin

+0

@Catalin: L'expression rationnelle de Taylor remplace les étiquettes par la chaîne vide; Je ne vois pas comment cela peut les garder. –

+0

vrai, ne faisait pas attention, sry – Catalin

Questions connexes