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
Bonjour,

J'aurais voulu savoir s'il était possible de desactiver l'usage des script (javascript ou autre) dans les champs de formulaire? Car j'ai cherché sur le net, et beaucoup de site en parle, mais il n'y a jamais de codes!

Pourriez vous m'aider pour ce code s'il existe?

merci

Bonne journée

Alexandre
A voir également:

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
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.
0
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:39
Et encore je ne suis même pas certain que ça désactive toutes les manières d'introduire du Javascript. Ca supprime les balises, c'est tout...
0
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
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=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
0
velociraptor
26 mars 2005 à 07:55
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 :


<?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
0
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
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...
0

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
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>):
$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...)
0