[Php] Exp. Reg. j'ai encore du mal :-(
kilian
Messages postés
8732
Date d'inscription
Statut
Modérateur
Dernière intervention
-
GallyNet Messages postés 434 Date d'inscription Statut Membre Dernière intervention -
GallyNet Messages postés 434 Date d'inscription Statut Membre Dernière intervention -
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:
Mais ça marche pas :'-|
'ci d'avance....
PS: Par "ça marche pas", j'entends par là que ce filtre me retourne une page blanche...
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:
- [Php] Exp. Reg. j'ai encore du mal :-(
- Reg cleaner - Télécharger - Nettoyage
- Easy php - Télécharger - Divers Web & Internet
- Exp. sim canon ✓ - Forum Canon
- Multi exp pokemon heartgold - Forum Pokémon
- Multi exp pokemon diamant - Forum Jeux vidéo
9 réponses
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...!" ;-)
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...!" ;-)
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 :-)
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);
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
-balise script non fermée
-script dans les évènements de balise (onclick, onmouseover, etc)
Caro
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :-)
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);
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 :-|
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
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...!" ;-)
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...!" ;-)
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 :-)
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
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 '<'
- 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 '<'