Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SÉCURISER UN TEXTE ENREGISTRÉ SUR LE SERVEUR : SUPPRIMER L'EXECUTION DU PHP ET JAVASCRIPT


Information sur la source

Catégorie :Sécurité & Cryptage Classé sous : script, php, javascript, supprimer, sécuriser Niveau : Débutant Date de création : 26/06/2005 Date de mise à jour : 22/11/2005 18:26:47 Vu : 4 233

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (51)
Ajouter un commentaire et/ou une note


Description

Bonjour à tous,

voilà mon premier script que je me suis permis de déposer car je ne l'ai pas trouvé précédemment après moultes et moultes recherches ;)

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

Pour cela, on remplace juste les balises d'ouverture de script ( les caractères "<" et ">" ) par leurs équivalent html qui sont < et >

Comme ça dans la page on a ça :
<?
echo "Hello World !!";
?>

C'est différent de <? et ?> car la les balises ne sont pas reconnues, et à l'affichage de la page on a :
<? echo "Hello World !!"; ?>

Voilà pas compliqué, ça permet de sécuriser par exemple les post dans un forum, ou alors quand on upload une page web sur le serveur....
 

Source

  • // Enlève les scipts d'une chaine
  • function RemoveScriptstr($str)
  • {
  • $str = str_replace(array('<script','</script>','<?','?>'), array('<script','</script>','<?','?>'), $str);
  • return $str;
  • }
// Enlève les scipts d'une chaine
function RemoveScriptstr($str)
{
	$str = str_replace(array('<script','</script>','<?','?>'), array('<script','</script>','<?','?>'), $str);
	return $str;
}

Conclusion

Petites précisions :
Je suis débutant confirmé (c'est à dire que je confirme très beaucoup que je suis débutant) donc rien n'est optimisé, il y a surement des meilleures méthodes, des oublis et tout et tout...

JE COMPTE SUR VOUS POUR PROPOSER DES AMELIORATIONS ;)

Merci

MadMatt

(merci au forum CS)
 

Historique

26 juin 2005 23:21:17 :
Utilisation de Array par Anthomicro
22 novembre 2005 18:26:47 :
Ajout des mots clés

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 26/06/2005 20:18:26

Salut,

tu peux remplacer tes multiples str_replace par des array :

function removescriptstr(&$str)
{
     $str=str_replace(array('<script','</script>','<?','?>'),array('alt;script','&lt;/script&gt;','&lt;?','?&gt;'),$str);
}

Ensuite t'appelles ta fonction comme ça par exemple :

<?php
function removescriptstr(&$str)
{
     $str=str_replace(array('<script','</script>','<?','?>'),array('&lt;script','&lt;/script&gt;','&lt;?','?&gt;'),$str);
}
$var='<script>machin';
echo removescriptstr($var);
?>

a +

signaler à un administrateur
Commentaire de Arnauti le 26/06/2005 20:31:30

Je trouve que ce code est tres pratique, moi qui savait pas comment faire.

Merci,
       A++

signaler à un administrateur
Commentaire de MadM@tt le 26/06/2005 21:31:05

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 !

signaler à un administrateur
Commentaire de Anthomicro le 26/06/2005 22:22:09

oui c'est plus rapide ;-)

signaler à un administrateur
Commentaire de Anthomicro le 26/06/2005 22:27:05

Au fait je vois que tu rentres à l'INSA de Lyon ;-)

Chapeau faut le faire, t'es un bon ;-)

signaler à un administrateur
Commentaire de MadM@tt le 26/06/2005 23:16:32

;) merci c'est sympa

pour la modif je vais la faire merci

signaler à un administrateur
Commentaire de ImmortalPC le 27/06/2005 18:00:14

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('&lt;script','&lt;/script&gt;','&lt;?','?&gt;'), $_POST);
}
?>
@+

signaler à un administrateur
Commentaire de Anthomicro le 27/06/2005 18:06:33

Ce n'est pas plus simple que sa source, et ça ne fonctionne pas dans toutes les situations :-)

signaler à un administrateur
Commentaire de MadM@tt le 27/06/2005 20:15:39

Oui ici c'est l'avantage d'une fonction qui est interressant...
Réutilisable facilement

signaler à un administrateur
Commentaire de ImmortalPC le 27/06/2005 21:08:29

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 !?

+

signaler à un administrateur
Commentaire de Anthomicro le 27/06/2005 21:54:49

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.

signaler à un administrateur
Commentaire de sjon le 28/06/2005 00:07:47

Sael og blesud

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 &lt; et &gt; ...

Sigurjón Bírgir Sigurðssón aka Sjón

signaler à un administrateur
Commentaire de sjon le 28/06/2005 00:11:36

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

signaler à un administrateur
Commentaire de malalam le 28/06/2005 09:42:32 administrateur CS

Ca ne marche plus partout ca, a priori. C'est un element obsolete.
En tous cas ca ne marche pas chez moi lol.

signaler à un administrateur
Commentaire de ImmortalPC le 28/06/2005 09:53:18

Re,
>Anthomicro
tu remplaces $_POST par $_GET et voilà.
Ensuite j'ai dit dans le fichier où l'ontraite ces données.
@+

signaler à un administrateur
Commentaire de Anthomicro le 28/06/2005 09:54:52

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 ?!

signaler à un administrateur
Commentaire de malalam le 28/06/2005 09:55:46 administrateur CS

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.

signaler à un administrateur
Commentaire de Anthomicro le 28/06/2005 10:07:29

bah c'est pourtant clair lol

signaler à un administrateur
Commentaire de malalam le 28/06/2005 10:10:25 administrateur CS

J'ai du mal a saisir ta logique la, Immortal, lol.

signaler à un administrateur
Commentaire de sjon le 28/06/2005 12:54:53

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

signaler à un administrateur
Commentaire de MadM@tt le 28/06/2005 17:33:24

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 ;)

signaler à un administrateur
Commentaire de MadM@tt le 28/06/2005 17:38:33

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

signaler à un administrateur
Commentaire de grandvizir le 29/06/2005 10:28:05

Le code paraît compliqué. Il suffit simplement de remplacer les "<" par "&lt;". C'est tout... Y'avais un logiciel qui faisait comme ça. Au final, on a simplement :

  function RemoveScriptstr($str) {
    return str_replace('<', '&gt;', $str);
  }

signaler à un administrateur
Commentaire de MadM@tt le 29/06/2005 14:11:01

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

signaler à un administrateur
Commentaire de grandvizir le 30/06/2005 10:24:06

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é.

signaler à un administrateur
Commentaire de malalam le 30/06/2005 10:26:50 administrateur CS

Hello,

heu non, c'est l'effet "norme XHTML" en fait, lol.

signaler à un administrateur
Commentaire de sjon le 01/07/2005 01:04:28

Sael og blesud

>> Malalam : ,-) ... hóigh ;-) ...

Sigurjón Bírgir Sigurðssón aka Sjón

signaler à un administrateur
Commentaire de Anthomicro le 01/07/2005 01:25:58

Ce qui veut dire ? (lol)

signaler à un administrateur
Commentaire de sjon le 01/07/2005 08:30:10

Sael og blesud

>> ??? ( lol ) : hóigh : hi ... ;-) en gaelic ( de mémoire ... lol ) ... ;-)

Sigurjón Bírgir Sigurðssón aka Sjón

signaler à un administrateur
Commentaire de mantalo le 26/09/2005 12:42:15

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^^.

signaler à un administrateur
Commentaire de Anthomicro le 26/09/2005 18:38:09

je me suis posé et je me pose encore la question également :-)

signaler à un administrateur
Commentaire de malalam le 27/09/2005 08:31:12 administrateur CS

Pour montrer comment est probablement codé htmlentities() ... (language mis à part) ? ;-)

signaler à un administrateur
Commentaire de sjon le 27/09/2005 08:39:23

lol ;-)

signaler à un administrateur
Commentaire de malalam le 27/09/2005 09:04:20 administrateur CS

Tien, salut Sjon (ah ben j'ai pas trouvé l'accent là) :-) Ca va ?

signaler à un administrateur
Commentaire de sjon le 27/09/2005 09:08:43

Malalam >> Ouais si on veut ... Je commence à ne plus supporter le fait d'être allongé mais autrement cela va ... ;-) et vous ?

signaler à un administrateur
Commentaire de malalam le 27/09/2005 09:13:52 administrateur CS

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

signaler à un administrateur
Commentaire de sjon le 27/09/2005 09:37:18

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 ... ;-)

signaler à un administrateur
Commentaire de MadM@tt le 05/11/2005 15:17:22

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à

signaler à un administrateur
Commentaire de Anthomicro le 05/11/2005 15:18:47

bah y'a la fonction htmlspecialchars aussi ;-)

signaler à un administrateur
Commentaire de MadM@tt le 05/11/2005 18:08: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.

signaler à un administrateur
Commentaire de Anthomicro le 05/11/2005 18:25:42

" oui mais moi je veux qu'ils puissent utiliser l'html"

je redis ce que j'ai dit : tu peux utiliser htmlspecialchars :-)

signaler à un administrateur
Commentaire de MadM@tt le 05/11/2005 18:30:04

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.

signaler à un administrateur
Commentaire de Anthomicro le 05/11/2005 18:39:19

rooo la belle bourde, c'est strip_tags à utiliser ;-)

htmlspecialchars enlève tout le html ;-)

signaler à un administrateur
Commentaire de MadM@tt le 05/11/2005 21:33:17

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é.

signaler à un administrateur
Commentaire de Anthomicro le 05/11/2005 21:45:51

bah htmlentities dans ce cas

signaler à un administrateur
Commentaire de MadM@tt le 05/11/2005 21:49:30

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

signaler à un administrateur
Commentaire de Anthomicro le 05/11/2005 22:14:09

ah ok... je comprends mieux ton problème. regarde du côté de http://fr.php.net/manual/fr/function.get-html-translation-table.php

que tu pourras modifier à ta guise (modifier le tableau renvoyé par cette fonction) pour ensuite convertir les balises de ton choix ;-)

signaler à un administrateur
Commentaire de MadM@tt le 05/11/2005 23:15:22

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.

signaler à un administrateur
Commentaire de ImmortalPC le 06/11/2005 09:56:32

Salut,
tu utilises les expréssions régulières et preg_replace()
$msg = preg_replace('onmouseout="exp régulière"', '', $msg);
@+

signaler à un administrateur
Commentaire de Kevin007 le 27/11/2005 10:50:39

Bonjour bonjour,

Pourquoi ne pas utiliser la fonction strip_tags() et ses deux paramètres ?

strip_tags( $string, '<strong><li><lu><span><div>[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+

signaler à un administrateur
Commentaire de MadM@tt le 03/12/2005 22:26:49

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 ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Script Javascript + PHP [ par nicolas66 ] Bonjour @ tous !Je pensé avoir trouvé une solution possible avec ce script en plaçant les coordonnées de la souris ds des boites de textes, puis récup Javascript et Netscape 7 [ par DevelMan ] Voila :J'ai ce bout de script dans un prog php. Avec Internet Explorer, çà marche nickel, mais quand j'essaie avec Netscape, çà ne marche pas (La fene appel script php en javascript [ par martiall ] Salut à tous et toutes,Désolé si cette question a déjà été posée, mais je n'ai rien trouvé sur le forum.Donc, j'ai un petit script alertes.php qui va javascript + php + frames?? [ par zebestt ] Bonjour, voila, je m'explique, j'ai un petit probl&#232;me pour cr&#233;er un script...J'aimerai creer un script qui permette d'ouvrir un lien dans un passer des variables php dans du javascript [ par dalisassou ] slt,j r&#233;aliser un script en java script qui realise une popup,mais j trouver un problem de passage de variable,moi ds la popup je veu afficher de Supprimer le code PHP d'une page [ par MadM@tt ] Re-Bonjour &#224; tous (d&#233;sol&#233; en ce moment j'ai plein de questions ) Je voudrais savoir comment faire d&#233;barrasser une page web de tou question php javascript... [ par joduak ] Salut &#224; vous! Alors je p&#233;sente la situation... J'ai un formulaire et lorsque le client a fini sa saisie dans un textbox (onblur), par exemp Valeur Javascript dans PHP [ par EutcheX ] Bonjour &#224; tous, Je cherche &#224; savoir comment ins&#233;rer une valeur Javascript dans du code PHP ... Je m'explique : j'ai un &lt;select&gt; Fonction javascript dans PHP [ par Vautour013 ] Bonjour, Est-il possible d'appeler une fonction javascript dans un script php et de retourner une valeur (ou un tableau) dans une variable du script supprimer un tuple en php par confirmation avec confirm() de javascript [ par benstar ] bonjour je voudrais supprimer mes enregistrements affichés dans un tableau en utilisant confirm de javascript. Si on choisit oui alors on supprime l'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.