SÉCURISER UN TEXTE ENREGISTRÉ SUR LE SERVEUR : SUPPRIMER L'EXECUTION DU PHP ET J
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
26 juin 2005 à 20:18
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 2009
-
3 déc. 2005 à 22:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 3 déc. 2005 à 22:26
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 ;)
cs_Kevin007
Messages postés40Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention 1 octobre 2006 27 nov. 2005 à 10:50
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+
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 6 nov. 2005 à 09:56
Salut,
tu utilises les expréssions régulières et preg_replace()
$msg = preg_replace('onmouseout="exp régulière"', '', $msg);
@+
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 5 nov. 2005 à 23:15
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.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 5 nov. 2005 à 22:14
que tu pourras modifier à ta guise (modifier le tableau renvoyé par cette fonction) pour ensuite convertir les balises de ton choix ;-)
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 5 nov. 2005 à 21:49
Présentation de la source : "Attention : ça n'empèche pas l'hmtl de s'executer, sinon autant utiliser htmlentities() et ça n'est pas le but..."
Et je n'ai pas trouvé comment faire d'exceptions pour les balises html avec htmlentities
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 5 nov. 2005 à 21:45
bah htmlentities dans ce cas
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 5 nov. 2005 à 21:33
Ah ok je vois, mais encore une fois ça va pas dsl ;)
C'est un site de programmation, donc dans le forum et tout je vois mal comment les utilisateurs pourront se donner des bouts de code en php ou js par exemple si c'est supprimé. Je veux que ça soit affiché moi, mais pas interprété.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 5 nov. 2005 à 18:39
rooo la belle bourde, c'est strip_tags à utiliser ;-)
htmlspecialchars enlève tout le html ;-)
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 5 nov. 2005 à 18:30
Ben jviens juste d'aller sur nexen pourtant j'ai du louper un truc alors.
Si tu pouvais m'expliquer comment faire, je sais pas, y'a des paramêtres à passer ?
Pendant ce temps jvai la tester.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 5 nov. 2005 à 18:25
" oui mais moi je veux qu'ils puissent utiliser l'html"
je redis ce que j'ai dit : tu peux utiliser htmlspecialchars :-)
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 5 nov. 2005 à 18:08
oui mais moi je veux qu'ils puissent utiliser l'html
En tout cas j'ai pas arreté de demander une fonction comme ça sur les forum et pas de réponse alors :( jlai faite moi meme.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 5 nov. 2005 à 15:18
bah y'a la fonction htmlspecialchars aussi ;-)
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 5 nov. 2005 à 15:17
mantalo >> Désolé de ne pas avoir répondu plus tot. Si tu avais lu la présentation de la source tu aurais lu :
"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..."
Car voilà dans un forum par exemple, tu poste un message, et si tu veux tu peux le formater, c'est à dire mettre en gras un passage, souligné etc... Mais tu peux aussi mettre du script Javascript, ou du PHP etc.. Mais avec les scripts n'importe qui peut faire des trucs dangereux, donc il faut interdire le javascript, php etc... et autoriser le html.
En php il existe la fonction htmlentities qui interdit toute balise, donc tout script ET tout code html, ce qui ne me convient pas. Donc j'ai codé moi meme une fonction qui désactive seulement les scripts.
Voilà
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 27 sept. 2005 à 09:37
C'est très bien le Delphi ... ;-) bon un peu caractériel mais bon ... ;-) Normalement je devrai, si tout va bien pouvoir sortir, en fauteuil ( youpi !!! ;-) ), dans 10 semaines ... La patience est une vertue mais c'est un peu comme l'éternité : c'est long surtout vers la fin ... ;-)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 27 sept. 2005 à 09:13
Ca va, ça va, je me prends la tête avec du Delphi là (c'est nul ce langage, lol).
Tu en as pour combien de temps...?
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 27 sept. 2005 à 09:08
Malalam >> Ouais si on veut ... Je commence à ne plus supporter le fait d'être allongé mais autrement cela va ... ;-) et vous ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 27 sept. 2005 à 09:04
Tien, salut Sjon (ah ben j'ai pas trouvé l'accent là) :-) Ca va ?
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 27 sept. 2005 à 08:39
lol ;-)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 27 sept. 2005 à 08:31
Pour montrer comment est probablement codé htmlentities() ... (language mis à part) ? ;-)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 26 sept. 2005 à 18:38
je me suis posé et je me pose encore la question également :-)
cs_mantalo
Messages postés15Date d'inscriptionmardi 24 février 2004StatutMembreDernière intervention 6 septembre 2006 26 sept. 2005 à 12:42
ben moi parcontre je suis un vrai debutant pur et dur. Pour moi la sécurité et primordiale, mais je ne comprend pas lutiliter du script. je ve pas dire quil est inutile mais que je ne comprends pas ce qu'il fait, et a koi ca sert au nivo sécuritaire
Je vous remerci de m'explique et de ne pas me lincher^^.
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 1 juil. 2005 à 08:30
Sael og blesud
>> ??? ( lol ) : hóigh : hi ... ;-) en gaelic ( de mémoire ... lol ) ... ;-)
Sigurjón Bírgir Sigurðssón aka Sjón
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 1 juil. 2005 à 01:25
Ce qui veut dire ? (lol)
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 1 juil. 2005 à 01:04
Sael og blesud
>> Malalam : ,-) ... hóigh ;-) ...
Sigurjón Bírgir Sigurðssón aka Sjón
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 30 juin 2005 à 10:26
Hello,
heu non, c'est l'effet "norme XHTML" en fait, lol.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 30 juin 2005 à 10:24
Tu as raison... et notons que sur le forum de ce site, tout script <SCRIPT>abcdef</script> est remplacé par <SCRIPT><![CDATA[bcdef]]></SCRIPT>. C'est l'effet FreeTextBox.com ... Allez savoir pourquoi. De plus, dans une page, quand tu fais un echo de script PHP, il n'est pas interprété.
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 29 juin 2005 à 14:11
Lis un peu la présentation du code, si on fait ce que tu dis ça supprime meme les balises html, ce que l'on ne veut pas...
Car dans ton cas autant utiliser la fonction htmlentities() et ça revient à ce que tu as dit...
Donc non, ça ne revient pas au meme et ce n'est pas ce qu'on cherche
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 29 juin 2005 à 10:28
Le code paraît compliqué. Il suffit simplement de remplacer les "<" par "<". C'est tout... Y'avais un logiciel qui faisait comme ça. Au final, on a simplement :
function RemoveScriptstr($str) {
return str_replace('<', '>', $str);
}
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 28 juin 2005 à 17:38
Euh petite précision pour ceux qui se poseraient des questions : dans la description du code en haut de la page lorsque j'écrit :
"Comme ça dans la page on a ça :
<?
echo "Hello World !!";
?>"
Les caractères "<" et ">" étaient censé être des codes html ("& l t ;" et "& g t ;") mais ils sont interprétés lors de l'affichage de la page (normal) donc voilà je précise sinon ce qui est écrit n'a pas de sens :S
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 28 juin 2005 à 17:33
Pour votre histoire de <xmp> c'est peut etre pas une bonne idée si c'est pas présent de partout... Mais c'était une bonne idée.
Immortal >> lol la même chose que Malalam et Anthomicro
Merci à tous pour donner des idées en tout cas ;)
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 28 juin 2005 à 12:54
Sael og blesud
>> Malalam : " Ca ne marche plus partout ca, a priori. C'est un element obsolete.
En tous cas ca ne marche pas chez moi lol. " Je présume que c'était pour moi ;-) ... En fait je m'en était servi il y a quelques temps sur un Intranet ( vous savez là où la configuration du parc est " contrôlable " ... ? ;-) ) donc je pense qu'il faudrait effectivement le réécrire sans le xmp mais cela peut donner des idées ... ;-) Par ailleurs je l'ai testé sur windows Mobility 2003 2nd Edition en vm et cela fonctionnait ... ( Bah oui j'étais en esqualle à Manille pour 1h, fallait faire le plein à la pompe ;-), et les aéroports question Wifi c'est le top !!! ;-) ... )
Sigurjón Bírgir Sigurðssón aka Sjón
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 juin 2005 à 10:10
J'ai du mal a saisir ta logique la, Immortal, lol.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 juin 2005 à 10:07
bah c'est pourtant clair lol
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 juin 2005 à 09:55
Bah, Immortal, il vaut mieux une fonction, que tu inclus dand un fichier de fonctions, et que tu appelles quand tu en as besoin.
Ce sera toujours plus simple que de retaper ton code a chaque fois, en modifiant en plus le post en get de temps a autres.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 juin 2005 à 09:54
dans sa fonction tu mets ce que tu veux, t'as rien à remplacer, je vois donc pas l'utilité de compliquer la chose, surtout en disant que c'est plus simple... non ?!
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 28 juin 2005 à 09:53
Re,
>Anthomicro
tu remplaces $_POST par $_GET et voilà.
Ensuite j'ai dit dans le fichier où l'ontraite ces données.
@+
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 juin 2005 à 09:42
Ca ne marche plus partout ca, a priori. C'est un element obsolete.
En tous cas ca ne marche pas chez moi lol.
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 28 juin 2005 à 00:11
Sael og blesud
Par ailleurs dans le cadre d'un forum géré par des sessions de faire en sorte que le code incriminé soit totalement supprimé ( il faudra cependant pour cela modifier votre function ) pour un utilisateur normal et de l'afficher pour un admin afin de dire aux admins : Attention à ce user ...
Sigurjón Bírgir Sigurðssón aka Sjón
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 28 juin 2005 à 00:07
Cela conserve le multi-ligne éventuel et désactive le script Par ailleurs vous pouvez appliquer un style au xmp via css pour qu'il soit en rouge par exemple ... Et cela permet en plus de concerver les "<" ">" au lieu d'avoir < et > ...
Sigurjón Bírgir Sigurðssón aka Sjón
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 27 juin 2005 à 21:54
Bah y'a qu'à voir ton code, si je passe en $_GET ça fonctionne plus vu que ton code vérifie le $_POST seulement...
En plus ton code remplace tout directement, alors qu'on en a peut-être pas le besoin... Bref le code proposé est bon, tu en as fait un exemple mais pas une généralisation.
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 27 juin 2005 à 21:08
La dès que les infos arrivent elles sont traitées.
Donc je voie pas où est le problème ?
>"ça ne fonctionne pas dans toutes les situations"
Où as tu vu ça !?
+
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 27 juin 2005 à 20:15
Oui ici c'est l'avantage d'une fonction qui est interressant...
Réutilisable facilement
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 27 juin 2005 à 18:06
Ce n'est pas plus simple que sa source, et ça ne fonctionne pas dans toutes les situations :-)
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 27 juin 2005 à 18:00
Salut,
Voici un truc plus simple et automatique
Mettre ceci en haut de la page de récéption :
<?php
if(isset($_POST)){
$_POST = str_replace(array('<script','</script>','<?','?>'), array('<script','</script>','<?','?>'), $_POST);
}
?>
@+
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 26 juin 2005 à 23:16
;) merci c'est sympa
pour la modif je vais la faire merci
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 26 juin 2005 à 22:27
Au fait je vois que tu rentres à l'INSA de Lyon ;-)
Chapeau faut le faire, t'es un bon ;-)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 26 juin 2005 à 22:22
oui c'est plus rapide ;-)
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 26 juin 2005 à 21:31
Arnauti >> Merci ;)
AnthoMicro >> Excellente idée ça raccourcirait le code et ça n'appelerait la fonction qu'une seule fois, mais c'est plus rapide ?
Merci pour la suggestion en tout cas, et j'en attend d'autre si vous en avez !
cs_Arnauti
Messages postés392Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention26 septembre 2009 26 juin 2005 à 20:31
Je trouve que ce code est tres pratique, moi qui savait pas comment faire.
Merci,
A++
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 26 juin 2005 à 20:18
Salut,
tu peux remplacer tes multiples str_replace par des array :
function removescriptstr(&$str)
{
$str=str_replace(array('<script','</script>','<?','?>'),array('alt;script','</script>','<?','?>'),$str);
}
Ensuite t'appelles ta fonction comme ça par exemple :
<?php
function removescriptstr(&$str)
{
$str=str_replace(array('<script','</script>','<?','?>'),array('<script','</script>','<?','?>'),$str);
}
$var='<script>machin';
echo removescriptstr($var);
?>
3 déc. 2005 à 22:26
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 ;)
27 nov. 2005 à 10:50
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+
6 nov. 2005 à 09:56
tu utilises les expréssions régulières et preg_replace()
$msg = preg_replace('onmouseout="exp régulière"', '', $msg);
@+
5 nov. 2005 à 23:15
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.
5 nov. 2005 à 22:14
que tu pourras modifier à ta guise (modifier le tableau renvoyé par cette fonction) pour ensuite convertir les balises de ton choix ;-)
5 nov. 2005 à 21:49
Et je n'ai pas trouvé comment faire d'exceptions pour les balises html avec htmlentities
5 nov. 2005 à 21:45
5 nov. 2005 à 21:33
C'est un site de programmation, donc dans le forum et tout je vois mal comment les utilisateurs pourront se donner des bouts de code en php ou js par exemple si c'est supprimé. Je veux que ça soit affiché moi, mais pas interprété.
5 nov. 2005 à 18:39
htmlspecialchars enlève tout le html ;-)
5 nov. 2005 à 18:30
Si tu pouvais m'expliquer comment faire, je sais pas, y'a des paramêtres à passer ?
Pendant ce temps jvai la tester.
5 nov. 2005 à 18:25
je redis ce que j'ai dit : tu peux utiliser htmlspecialchars :-)
5 nov. 2005 à 18:08
En tout cas j'ai pas arreté de demander une fonction comme ça sur les forum et pas de réponse alors :( jlai faite moi meme.
5 nov. 2005 à 15:18
5 nov. 2005 à 15:17
"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..."
Car voilà dans un forum par exemple, tu poste un message, et si tu veux tu peux le formater, c'est à dire mettre en gras un passage, souligné etc... Mais tu peux aussi mettre du script Javascript, ou du PHP etc.. Mais avec les scripts n'importe qui peut faire des trucs dangereux, donc il faut interdire le javascript, php etc... et autoriser le html.
En php il existe la fonction htmlentities qui interdit toute balise, donc tout script ET tout code html, ce qui ne me convient pas. Donc j'ai codé moi meme une fonction qui désactive seulement les scripts.
Voilà
27 sept. 2005 à 09:37
27 sept. 2005 à 09:13
Tu en as pour combien de temps...?
27 sept. 2005 à 09:08
27 sept. 2005 à 09:04
27 sept. 2005 à 08:39
27 sept. 2005 à 08:31
26 sept. 2005 à 18:38
26 sept. 2005 à 12:42
Je vous remerci de m'explique et de ne pas me lincher^^.
1 juil. 2005 à 08:30
>> ??? ( lol ) : hóigh : hi ... ;-) en gaelic ( de mémoire ... lol ) ... ;-)
Sigurjón Bírgir Sigurðssón aka Sjón
1 juil. 2005 à 01:25
1 juil. 2005 à 01:04
>> Malalam : ,-) ... hóigh ;-) ...
Sigurjón Bírgir Sigurðssón aka Sjón
30 juin 2005 à 10:26
heu non, c'est l'effet "norme XHTML" en fait, lol.
30 juin 2005 à 10:24
29 juin 2005 à 14:11
Car dans ton cas autant utiliser la fonction htmlentities() et ça revient à ce que tu as dit...
Donc non, ça ne revient pas au meme et ce n'est pas ce qu'on cherche
29 juin 2005 à 10:28
function RemoveScriptstr($str) {
return str_replace('<', '>', $str);
}
28 juin 2005 à 17:38
"Comme ça dans la page on a ça :
<?
echo "Hello World !!";
?>"
Les caractères "<" et ">" étaient censé être des codes html ("& l t ;" et "& g t ;") mais ils sont interprétés lors de l'affichage de la page (normal) donc voilà je précise sinon ce qui est écrit n'a pas de sens :S
28 juin 2005 à 17:33
Immortal >> lol la même chose que Malalam et Anthomicro
Merci à tous pour donner des idées en tout cas ;)
28 juin 2005 à 12:54
>> Malalam : " Ca ne marche plus partout ca, a priori. C'est un element obsolete.
En tous cas ca ne marche pas chez moi lol. " Je présume que c'était pour moi ;-) ... En fait je m'en était servi il y a quelques temps sur un Intranet ( vous savez là où la configuration du parc est " contrôlable " ... ? ;-) ) donc je pense qu'il faudrait effectivement le réécrire sans le xmp mais cela peut donner des idées ... ;-) Par ailleurs je l'ai testé sur windows Mobility 2003 2nd Edition en vm et cela fonctionnait ... ( Bah oui j'étais en esqualle à Manille pour 1h, fallait faire le plein à la pompe ;-), et les aéroports question Wifi c'est le top !!! ;-) ... )
Sigurjón Bírgir Sigurðssón aka Sjón
28 juin 2005 à 10:10
28 juin 2005 à 10:07
28 juin 2005 à 09:55
Ce sera toujours plus simple que de retaper ton code a chaque fois, en modifiant en plus le post en get de temps a autres.
28 juin 2005 à 09:54
28 juin 2005 à 09:53
>Anthomicro
tu remplaces $_POST par $_GET et voilà.
Ensuite j'ai dit dans le fichier où l'ontraite ces données.
@+
28 juin 2005 à 09:42
En tous cas ca ne marche pas chez moi lol.
28 juin 2005 à 00:11
Par ailleurs dans le cadre d'un forum géré par des sessions de faire en sorte que le code incriminé soit totalement supprimé ( il faudra cependant pour cela modifier votre function ) pour un utilisateur normal et de l'afficher pour un admin afin de dire aux admins : Attention à ce user ...
Sigurjón Bírgir Sigurðssón aka Sjón
28 juin 2005 à 00:07
Une autre solution intéressante :
function RemoveScriptstr($str)
{
$str = str_replace(array('<script','</script>','<?','?>'), array('<xmp><script','</script></xmp>','<xmp><?','?></xmp>'), $str);
return $str;
}
Cela conserve le multi-ligne éventuel et désactive le script Par ailleurs vous pouvez appliquer un style au xmp via css pour qu'il soit en rouge par exemple ... Et cela permet en plus de concerver les "<" ">" au lieu d'avoir < et > ...
Sigurjón Bírgir Sigurðssón aka Sjón
27 juin 2005 à 21:54
En plus ton code remplace tout directement, alors qu'on en a peut-être pas le besoin... Bref le code proposé est bon, tu en as fait un exemple mais pas une généralisation.
27 juin 2005 à 21:08
Donc je voie pas où est le problème ?
>"ça ne fonctionne pas dans toutes les situations"
Où as tu vu ça !?
+
27 juin 2005 à 20:15
Réutilisable facilement
27 juin 2005 à 18:06
27 juin 2005 à 18:00
Voici un truc plus simple et automatique
Mettre ceci en haut de la page de récéption :
<?php
if(isset($_POST)){
$_POST = str_replace(array('<script','</script>','<?','?>'), array('<script','</script>','<?','?>'), $_POST);
}
?>
@+
26 juin 2005 à 23:16
pour la modif je vais la faire merci
26 juin 2005 à 22:27
Chapeau faut le faire, t'es un bon ;-)
26 juin 2005 à 22:22
26 juin 2005 à 21:31
AnthoMicro >> Excellente idée ça raccourcirait le code et ça n'appelerait la fonction qu'une seule fois, mais c'est plus rapide ?
Merci pour la suggestion en tout cas, et j'en attend d'autre si vous en avez !
26 juin 2005 à 20:31
Merci,
A++
26 juin 2005 à 20:18
tu peux remplacer tes multiples str_replace par des array :
function removescriptstr(&$str)
{
$str=str_replace(array('<script','</script>','<?','?>'),array('alt;script','</script>','<?','?>'),$str);
}
Ensuite t'appelles ta fonction comme ça par exemple :
<?php
function removescriptstr(&$str)
{
$str=str_replace(array('<script','</script>','<?','?>'),array('<script','</script>','<?','?>'),$str);
}
$var='<script>machin';
echo removescriptstr($var);
?>
a +