Sécuriser un texte enregistré sur le serveur : supprimer l'execution du php et javascript

5/5 (51 avis)

Snippet vu 6 025 fois - Téléchargée 29 fois

Contenu du snippet

Bonjour à tous,

voilà mon premier script que je me suis permis de déposer car je ne l'ai pas trouvé précédemment après moultes et moultes recherches ;)

C'est vraiment con et c'est rien de nouveau : ça empèche juste le javascript et le php d'etre interprété (extensible à l'asp)...
Attention : ça n'empèche pas l'hmtl de s'executer, sinon autant utiliser htmlentities() et ça n'est pas le but...

Pour cela, on remplace juste les balises d'ouverture de script ( les caractères "<" et ">" ) par leurs équivalent html qui sont < et >

Comme ça dans la page on a ça :
<?
echo "Hello World !!";
?>

C'est différent de <? et ?> car la les balises ne sont pas reconnues, et à l'affichage de la page on a :
<? echo "Hello World !!"; ?>

Voilà pas compliqué, ça permet de sécuriser par exemple les post dans un forum, ou alors quand on upload une page web sur le serveur....

Source / Exemple :


// Enlève les scipts d'une chaine
function RemoveScriptstr($str)
{
	$str = str_replace(array('<script','</script>','<?','?>'), array('<script','</script>','<?','?>'), $str);
	return $str;
}

Conclusion :


Petites précisions :
Je suis débutant confirmé (c'est à dire que je confirme très beaucoup que je suis débutant) donc rien n'est optimisé, il y a surement des meilleures méthodes, des oublis et tout et tout...

JE COMPTE SUR VOUS POUR PROPOSER DES AMELIORATIONS ;)

Merci

MadMatt

(merci au forum CS)

A voir également

Ajouter un commentaire Commentaires
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Merci ImmortalPC pour ta suggestion, ça m'as l'air d'être ce que je cherchais, je vais regarder.

Kevin > Strip_tags va m'épargner les balises d'html que je veux garder : Ok, comme ça les utilisateurs peuvent formater leurs textes
Mais ça va quand même me supprimer les balises que j'auraient interdites : php, script etc... Je ne peux pas les autoriser pour des questions évidentes de sécurité, je ne veux pas les supprimer non plus car si ça se trouve c'est du code source. C'est comme si sur phpcs.com on supprimait toutes les balises php des sources, y'aurait plus de code alors que les gens qui postent les sources ils ne veulent pas pirater le serveur.
Il faut donc que je les garde, mais que je les "désactive"
Mais merci pour ton interêt à la question ;)
Messages postés
40
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 octobre 2006

Bonjour bonjour,

Pourquoi ne pas utiliser la fonction strip_tags() et ses deux paramètres ?

strip_tags( $string, '<li><lu>
[etc...]' )

Le deuxième paramètre contient la liste des balises (HTML dans ton cas) à ne pas supprimer.

PS : Si l'option asp_tags de PHP est activée (je sais, il faut être tordu) ta vérification est caduque.

Voilà, A+
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Salut,
tu utilises les expréssions régulières et preg_replace()
$msg = preg_replace('onmouseout="exp régulière"', '', $msg);
@+
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
j'ai regardé mais ça revient un peu au meme que ce que j'ai fait non ?, on remplace "à la main" après avec strtr non ?
Par contre je serai interessé par si qqn avait des idées pour supprimer les "petits" appels de javascript de ce style : onmouseout="mnuLightOff(this)" enfin les appels de JS par les evenement quoi.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ah ok... je comprends mieux ton problème. regarde du côté de http://fr.php.net/manual/fr/function.get-html-translation-table.php

que tu pourras modifier à ta guise (modifier le tableau renvoyé par cette fonction) pour ensuite convertir les balises de ton choix ;-)
Afficher les 51 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.