begin process at 2012 02 15 20:48:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 912

Auteur : MadM@tt

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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

 Sources du même auteur

Source avec Zip Source avec une capture WEBSH : WEB SHELL POUR ADMINISTRER UN SERVEUR LINUX SANS CLI...
EXECUTER UN SCRIPT LONGUE DURÉE SANS LIMITATION DU SERVEUR
CRÉER UNE MINIATURE LIMITÉE EN SURFACE (ET PAS EN DIMENSIONS...
SAVOIR SI LE VISITEUR EST UN ROBOT D'UN MOTEUR DE RECHERCHE
CRÉER TOUTE UNE CHAINE DE RÉPERTOIRE : EXEMPLE CRÉER "/ESSAI...

 Sources de la même categorie

Source avec Zip Source avec une capture ACCÈS, ESPACE MEMBRE AVEC INSCRIPTION ET DÉSINSCRIPTION PAR ... par stephelle
Source avec Zip CRYPTAGE REVERSIBLE par Mokost
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
Source avec Zip PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien
CRYPTAGE/DECRYPTAGE MCRYPT par sephirothgeek

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture PAGINATION JAVASCRIPT PHP MYSQL par cod57
Source avec Zip PHPMYSITEWEB par toughzaa
Source avec Zip RESERVATION EN LIGNE DE GITE par gochardl
Source avec Zip PHOENIX INTERPRETOR par windows972

Commentaires et avis

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 +

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

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 !

Commentaire de Anthomicro le 26/06/2005 22:22:09

oui c'est plus rapide ;-)

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

Commentaire de MadM@tt le 26/06/2005 23:16:32

;) merci c'est sympa

pour la modif je vais la faire merci

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);
}
?>
@+

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

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

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

+

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.

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

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

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.

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

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

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.

Commentaire de Anthomicro le 28/06/2005 10:07:29

bah c'est pourtant clair lol

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

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

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

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

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

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

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

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

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

Hello,

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

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

Commentaire de Anthomicro le 01/07/2005 01:25:58

Ce qui veut dire ? (lol)

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

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

Commentaire de Anthomicro le 26/09/2005 18:38:09

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

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

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

Commentaire de sjon le 27/09/2005 08:39:23

lol ;-)

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 ?

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 ?

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

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

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à

Commentaire de Anthomicro le 05/11/2005 15:18:47

bah y'a la fonction htmlspecialchars aussi ;-)

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.

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

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.

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

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

Commentaire de Anthomicro le 05/11/2005 21:45:51

bah htmlentities dans ce cas

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

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

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.

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

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+

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

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales