[Php] Exp. Reg. j'ai encore du mal :-(

Fermé
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 - 11 déc. 2004 à 18:05
GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 - 5 janv. 2005 à 19:21
Bonjour,

Je reviens vous poser une question sur les expressions régulières, j'ai décidément du mal avec ça.

Je voudrais en quelque sorte créer un anti-script pour supprimer toutes les balises script d'un texte ainsi que le code qu'elles contiennent. Alors j'ai essayé ça:
$texte=ereg_replace("(<script)(.*)(</script>)","",$texte);


Mais ça marche pas :'-|

'ci d'avance....

PS: Par "ça marche pas", j'entends par là que ce filtre me retourne une page blanche...

var a=unescape("%3A-%29");
document.write(a);
A voir également:

9 réponses

kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
15 déc. 2004 à 23:00
Up..... :-)

var a=unescape("%3A-%29");
document.write(a);
0
Babylontiti Messages postés 59 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 8 février 2007 28
16 déc. 2004 à 20:40
Bonsoir kilian,

J'ai réussi à supprimer les balises <script language=""></script> et ce qu'elle contiennent.
Par contre j'ai utilisé un fichier texte externe pour l'exemple, vu que je ne sais pas quelle processus d'entrée tu utilises !
essaye ceci:

<?php
$filename = "script.txt"; //fichier dans le même répertoire
$file = fopen($filename,"rb"); //Ouverture du fichier en lecture seule "r" et binaire"b"(compatibilité windows)
while($f = fread($file,filesize($filename))){ //Tant que y'a des lignes dans le fichier...
$texte = eregi_replace('(<script [^<]*language=["|\']?([^ "\']*)["|\']?[^>].*>([^<]*).*</script>)','', $f); //Remplacement des balises <script>etc.
echo("$texte"); //affichage du résultat
}
fclose($file); //fermeture du pointeur
?>

Voilà, à toi de jouer maintenant,
personnalises tout ceci pour que ça concorde mieux à ton script.

PS:J'ai aussi appris en essayant de résoudre ton problème, alors merci de t'être poser la question... ;-)
@+

"La culture, c'est comme la confiture...
Moins on n'en as, plus on l'étale...!" ;-)
0
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
17 déc. 2004 à 00:57
Woah! Sacrée expression régulière. D'ailleurs j'ai pas tout compris mais je vais regarder ça bientôt ;-)
Pas ce soir hélas! Je me reveille tôt demain :-(

En tout cas merci beaucoup de t'être penché sur le problème. Je t'en donnerai des nouvelles rapidement ;-)
Pour info, mon entrée c'est un formulaire. J'ai besoin d'enlever les balises <script> pour des raisons de sécurité, au cas ou... Il faudras que je fasse la même chose pour enlever les balises <?, ?>; <% et %> et ce qu'elles contiennent mais ce sera pour après :-)
Je suppose que si ça marche pour un fichier, ça marchera pour un formulaire.

Merci beaucoup en tout cas :-)

var a=unescape("%3A-%29");
document.write(a);
0
Si c'est pour empêcher l'injection de script dans une base de données (par exemple), n'oublie pas les situations suivantes:

-balise script non fermée
-script dans les évènements de balise (onclick, onmouseover, etc)

Caro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
18 déc. 2004 à 03:54
Salut Car0,

En effet j'avais pas pensé à tout ça :-)
Pour tout t'avouer, la page en question est très peu fréquentée et poster dans ce formulaire nécessite certains droits au départ. Donc ça limite les risques. Ce script n'est pas vraiment necessaire, c'est surtout pour m'entrainer...
Mais je garde ton idée de côté pour plus tard ;-)

Je teste bientôt ton script Babylontiti :-)

var a=unescape("%3A-%29");
document.write(a);
0
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
4 janv. 2005 à 09:23
Salut Babylontiti,

J'ai essayé ton script mais ça me retourne une page blanche.
Mon texte à filtrer vient d'une variable et non pas d'un ficher comme dans ton script... Je rééssaierai plus tard...

Désolé de répondre aussi tard :-|

Sm95ZXVzZXMgZup0ZXMgOi0p
0
Babylontiti Messages postés 59 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 8 février 2007 28
5 janv. 2005 à 00:50
Salut Kilian,Car0 et Bonne Année à tous...! ;-)

Dans mon exemple, le fichier "script.txt" n'est pas vide, il contient une page web agrémentée de balises JavaScript !
Tapes du texte (ou autre) entre les balises <body>Texte</body>, se qui aura pour effet de te retourner autre chose qu'une simple page blanche.

Voici son contenu: (script.txt)

<html>
<head>
<title>Test ereg</title>
</head>
<body>
<SCRIPT LANGUAGE="JavaScript">
function alert(){
window.open("index.php");
}
</SCRIPT>
<a href=javascript:alert()>Hello world !</a>
</body>
</html>

[Une fois le script éxecuté:]
Dans ton navigateur, affiche le 'code source de la page', le contenu seras "identique" sauf biensûr sans les balises <script></script> etc...
Donc le lien présent qui pointe vers une fonction Javascript ne pourras pas s'éxecuter.

Et voilou.
En attendant, j'essaye avec un formulaire et je reviendrais te l'afficher ici dès que j'y serais arrivé...!
@+

"La culture, c'est comme la confiture...
Moins on n'en as, plus on l'étale...!" ;-)
0
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
5 janv. 2005 à 08:47
Salut,

Voui j'avais bien compris, j'ai juste adapté le script pour que la source à analyser vienne d'une variable $a="<html>...</html>"; et non pas d'un fichier....

Mais il me semble que j'avais modifié un peu ton expression regulière....je sais plus pourquoi, je vais réessayer avec ton expression telle qu'elle.... Je te dirai ce que ça donne.

Merci encore :-)

Sm95ZXVzZXMgZup0ZXMgOi0p
0
GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 387
5 janv. 2005 à 19:21
Salut Babylontiti, j'ai regarder un peu ton expression régulière et je pense qu'elle ne marchera pas correctement:
- si jamais quelqu'un met les balise script à l'interrieur d'une chaine de caractère (entre " ou ')
- si il ne met pas language=" ", qui sera malgré tout pris en compte par certains navigateurs et exécuté en javascript (par defaut)
- si dans le code javascript on a le caractère '<'
0