Php: desactivation des scripts
Fermé
velociraptor
-
25 mars 2005 à 10:10
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 26 mars 2005 à 13:10
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 26 mars 2005 à 13:10
A voir également:
- Php: desactivation des scripts
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Br php ✓ - Forum PHP
- Expert php - Télécharger - Langages
- Php echo image ✓ - Forum PHP
5 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
26 mars 2005 à 02:07
26 mars 2005 à 02:07
Salut,
Si tu veux désactiver l'html et le Javascript il ya une fonction qui s'appele strip_tags():
http://fr.php.net/manual/en/function.strip-tags.php
Mais lis les warnings sur la page que je viens de te citer avant de l'utiliser:
_ Ca peut enlever des parties de textes en cas de balises non-fermées.
_ Si tu autorises certaines balises, on pourra toujours y insérer du Javascript dedans...
Si tu veux juste déscativer le Javascript, il faudra y aller à coup d'expressions régulières.
Si tu veux désactiver l'html et le Javascript il ya une fonction qui s'appele strip_tags():
http://fr.php.net/manual/en/function.strip-tags.php
Mais lis les warnings sur la page que je viens de te citer avant de l'utiliser:
_ Ca peut enlever des parties de textes en cas de balises non-fermées.
_ Si tu autorises certaines balises, on pourra toujours y insérer du Javascript dedans...
Si tu veux juste déscativer le Javascript, il faudra y aller à coup d'expressions régulières.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
26 mars 2005 à 02:34
26 mars 2005 à 02:34
Tiens, tu peux t'inspirer d'une methode employée dans ce script:
http://sebsauvage.net/python/stripscripts.py
C'est du python mais l'idée est là: transformer le <script language="N'importe quel langage"> en <script language="Cquetuveux">
Ca désactivera le script.
En php ça donnerais grossièrement (pas sûr que ça marche à chaque coup):
$ton_texte étant la variable qui contient ce que tu as reçu du formulaire.
Mais ce n'est pas du tout une bonne protection puisqu'il ya plusieurs manières d'insérer du Javascript, et pas seulement avec les balises <script>... Et encore, ça s'applique au Javascript (et autres scripts qui s'insèrent via la balise script), je ne sais pas pour d'autres langages... Et les autres langages qui s'insèrent aussi via la balise< script> peuvent également avoir d'autres manières d'être appelés.
Pour les expressions régulières, voir:http://www.commentcamarche.net/php/phpreg.php3
http://sebsauvage.net/python/stripscripts.py
C'est du python mais l'idée est là: transformer le <script language="N'importe quel langage"> en <script language="Cquetuveux">
Ca désactivera le script.
En php ça donnerais grossièrement (pas sûr que ça marche à chaque coup):
$ton_texte=eregi_replace("<script[^>]*>","<script language=\"Cquetuveux\">",$ton_texte);
$ton_texte étant la variable qui contient ce que tu as reçu du formulaire.
Mais ce n'est pas du tout une bonne protection puisqu'il ya plusieurs manières d'insérer du Javascript, et pas seulement avec les balises <script>... Et encore, ça s'applique au Javascript (et autres scripts qui s'insèrent via la balise script), je ne sais pas pour d'autres langages... Et les autres langages qui s'insèrent aussi via la balise< script> peuvent également avoir d'autres manières d'être appelés.
Pour les expressions régulières, voir:http://www.commentcamarche.net/php/phpreg.php3
Bonjour,
merci pour votre aide,
J'avais effectivement pensé au remplacement de chaine de caractères, mais je me demandais si ça allait suffir! je crois que j'ai eu ma réponse en même temps! :-)
J'ai fais un petit code personnel :
Si ça renvois true alors il y a poste du formulaire sinon il y a message d'erreur!
Qu'en pensez vous?
Merci
Alexandre
merci pour votre aide,
J'avais effectivement pensé au remplacement de chaine de caractères, mais je me demandais si ça allait suffir! je crois que j'ai eu ma réponse en même temps! :-)
J'ai fais un petit code personnel :
<?php Function Verif($post) { $temp = $post; $temp = preg_replace("/(\015\012)|(\015)|(\012)/","",$temp); $temp = strtolower($temp); $lg = strlen($temp); for ( $i=0 ; $i<$lg ; $i++) { if ( ($temp[$i])== " " ) // si espace { for ( $j = $i ; $j < $lg ; $j++) $temp[$j] = $temp[$j+1]; $lg-- ; $i-- ; } } if (ereg ( "table>" , $temp) or ereg ( "tr>",$temp) or ereg ("td>",$temp) or ereg("script>",$temp) or ereg("meta>",$temp) or ereg("frame>",$temp) or ereg("iframe>",$temp) or ereg("style>",$temp) or ereg("form>",$temp) or ereg("input>",$temp) or ereg("select>",$temp) or ereg("div>",$temp) or ereg("layer>",$temp) or ereg("option>",$temp) or ereg("body>",$temp) or ereg("html>",$temp) or ereg("onclick",$temp) or ereg("<img",$temp) or ereg("src>",$temp) or ereg("object>",$temp) or ereg("<applet",$temp) or ereg ( "<table" , $temp) or ereg ( "<tr",$temp) or ereg ("<td",$temp) or ereg("<script",$temp) or ereg("<meta",$temp) or ereg("<frame",$temp) or ereg("<iframe",$temp) or ereg("<style",$temp) or ereg("<form",$temp) or ereg("<input",$temp) or ereg("<select",$temp) or ereg("<div",$temp) or ereg("<layer",$temp) or ereg("<option",$temp) or ereg("<body",$temp) or ereg("<html",$temp) or ereg("onclick",$temp) or ereg("<src",$temp) or ereg("<php",$temp) or ereg("php>",$temp) or ereg("<object",$temp) or ereg("applet>",$temp) ) return (false) ; else return (true) ; } ?>
Si ça renvois true alors il y a poste du formulaire sinon il y a message d'erreur!
Qu'en pensez vous?
Merci
Alexandre
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
26 mars 2005 à 12:34
26 mars 2005 à 12:34
J'en pense que je ne suis pas sûr qu'on puisse réellement pouvoir faire le tour de toutes les balises...
Par exemple il manque <span>, <embed>, il manque les balises asp: <% %>, il manque le Php: <?, <?php
En fait y'en manque plein :-)
Et pareil, onClick n'est qu'un evènement parmis tant d'autres en Javascript...
Par exemple il manque <span>, <embed>, il manque les balises asp: <% %>, il manque le Php: <?, <?php
En fait y'en manque plein :-)
Et pareil, onClick n'est qu'un evènement parmis tant d'autres en Javascript...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
26 mars 2005 à 13:10
26 mars 2005 à 13:10
Par contre là je suis chamboulé...
Je ne savais pas qu'on pouvait avoir accés à un caractère d'une chaine comme ça $chaine[$i] :-)
Merci pour l'astuce au passage :-)
Si tu veux mon avis, il vaut mieux procéder par autorisation plutôt que par restriction. Pourquoi ne pas autoriser uniquement que les principales balises de mise en page (<u>,<i>,<b>,<p>,<a>):
http://fr.php.net/manual/en/function.strip-tags.php#37562
Et après, libre à toi de filtrer le contenu de ces balises (les onClick etc...)
Je ne savais pas qu'on pouvait avoir accés à un caractère d'une chaine comme ça $chaine[$i] :-)
Merci pour l'astuce au passage :-)
Si tu veux mon avis, il vaut mieux procéder par autorisation plutôt que par restriction. Pourquoi ne pas autoriser uniquement que les principales balises de mise en page (<u>,<i>,<b>,<p>,<a>):
$balises='<u><i><b><p><a>'; $texte=strip_tags($texte,$balises);
http://fr.php.net/manual/en/function.strip-tags.php#37562
Et après, libre à toi de filtrer le contenu de ces balises (les onClick etc...)
26 mars 2005 à 02:39