begin process at 2012 05 31 10:27:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

[sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?

vendredi 4 juillet 2008 à 17:53:02 | [sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?

shinnokamui

Bonjour,

J'ai un formulaire dans un site avec un champ où l'utilisateur peut entrer du texte, j'aimerai récupérer ce texte d'une manière sécurisé et l'écrire dans un fichier sur le serveur...

Je me demandais si il était possible d'injecter du code "malveillant" avec un simple appel à une fonction d'écriture sur fichier, je c'est que c'est possible avec une requête SQL ou à l'affichage d'une variable $_GET modifié, mais y a t'il un risque avec un simple fputs(), et il faudrait donc protéger l'entrée de l'utilisateur par un $entrée= mysql_real_escape_string(htmlspecialchars($entrée)0); avant de l'écrire sur le fichier ?

Aussi, j'en profite pour poser une question consernant ce genre d'injection, voici un petit code :

$p = $p + 1;

imaginons que la variable $p soit accessible par l'utilisateur (il s'agit d'un $_GET par exemple), est ce qu'il y a un risque d'injection si l'utilisateur modifie la variable $p par :

; echo $mot_de_passe_important;

Voila, j'ai toujours quelques problèmes de comprehension avec les injections apparament, si quelqu'un pourrait m'éclairer spv
samedi 5 juillet 2008 à 04:05:22 | Re : [sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?

PlayerMania

L'injection SQL est le fait de réussir a détourné une requete SQL de sa vrai fonction. Donc c'est très dangereux pour les bases de données.
Il y à également d'autres types d'injections sur d'autres supports.

Au final, pour les éviter, il faut que tu échappe tes variables avant de les envoyer dans ta base ou tes fichiers grace à la fonction addslashes(); qui va donc ajouter un slashes devant chaque caractère qui pourrai permettre une injection.
Et bien sure, c'est a toi aussi de faire du ménage dans les chaine, et voir les caractères que tu autorise ou non, fonctions strtr(); str_replace();

Après, lorsque tu affiche ces variables, tu leur applique un stripslashes(); qui va donc enlever les échappements.

Applique tjrs ce système, avec une config php register_globals à Off et tous les magic_quotes_... à Off, et tu n'auras jamais d'injection.

samedi 5 juillet 2008 à 04:19:27 | Re : [sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?

PlayerMania

mouais... je suis un peu parti à droite, à gauche, dsl...

$p = $p + 1;

Tant que $p sers à rien à part afficher le résultat d'un calcul specifique à la session de qqun, bin qui s'amuse le gonz à le changer lol...
Mais si $p est plus tard dans le script enregistré quelque part dans un fichier via fputs() comme tu dis, la applique lui des filtres pour ne pas autorisé des caractères à tendance baliseuse ou autre, addslashes le aussi, au cas ou tu réimporterai en sql, tu risque plus une faille xss dans ton cas (selon ce que tu fais de tes données stocké dans tes fichiers)

samedi 5 juillet 2008 à 11:22:52 | Re : [sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?

shinnokamui

Merci ^^

Mais pour faire plus simple, est ce que appliquer les deux fonctions suivantes ne règle pas le problème d'injection ? (la première pour SQL, la deuxième pour le reste) vu que pour le faire en manuel (addslashes puis str_replace), il faudrait connaitre toutes les balises à éliminer, et ça me parait risqué si on s'y connait pas trop comme moi. Donc appliquer à toutes les entrées modifiables par l'utilisateur ceci ...

$entrée = mysql_real_escape_string(htmlspecialchars($entrée);

... ne réglerait pas tout les cas d'injections ?

Pour le fichier serveur, il s'agit juste d'un log, que je téléchargerait ensuite en FTP, il n'est pas utilisé dans le site en PHP. Donc si j'ai bien compris je ne risque rien avec le fputs() ?

Et pour les register_globals/magic_quotes_..., comment je modifis ça exactement ? je suis hébérgé chez Free...

J'en profite pour une nouvelle petite question ; si j'ai une variable numérique modifiable par l'user, est ce que $var = intvar($var); est risqué ? vu que quelque soit l'entrée, elle sera transformé en nombre, or la variable normalent est un nombre, donc aucun problèmes non ? (si l'user à tenté une injection, elle sera transformé en nombre ...)
samedi 5 juillet 2008 à 20:10:57 | Re : [sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?

PlayerMania

Réponse acceptée !

$entrée = mysql_real_escape_string(htmlspecialchars($entrée);
Ces fonctions sont bien mais elle n'enlevent pas forcément tout ce que tu souhaiterais (éventuellement quelques danger pourrai subsister selon ton script), il y a aussi certaine chaine unicode qui sont dangereuses.

Bref, au final, toi tu es hors de danger de tout manière, vu que ton fichier log n'est jamais utilisé pour construire, calculer qqch dans ton site, donc tu es hors des risques meme si il contient que des caractères à tendance dangereuse, ils ne seront jamais interprétés.

Pour la config du serveur, ça va peu etre rude chez free, regarde du coté de la fonction iniset();

$var = intval($var);
En fesant cela, c'est bien, tu fait une sorte de controle pour t'asssurer que c'est bien un chiffre qui doit etre retourné, essaye de mettre du charabia et des caractères louche dans $var et 0 sera retourné.
"elle sera transformé en nombre" => si c'en est reelement un

Je te laisse ça, t'en aura surement besoin un jour lol :
$special_char = array(" ", "!", ":", "?", "/", "$", "&", "%", "'", ",", "\"", "#", "{", "}", "(", ")", "[", "]", "|", "\\", "+", "=", "£", "¤", "µ", "*", "€", "<", ">", ";", "§", "^", "../", "./", "..\\", ".\\", "%00", "`", "~", "&#8230;", "&#710;", "&#8240;");
$var = str_replace($special_char,'',$var);
Enleve à ta guise ce que tu souhaites conserver et puis fait toi ta propre fonction specialchars.

samedi 5 juillet 2008 à 20:25:19 | Re : [sécurité] injection possible avec une simple écriture sur fichier dans le serveur ?

shinnokamui

Merci pour ta réponse, je pense avoir bien compris la chose maintenant ^^

A+


Cette discussion est classée dans : fichier, possible, simple, utilisateur, injection


Répondre à ce message

Sujets en rapport avec ce message

trouver mon erreur ! [ par tonyo ] Voila mon code qui doit me permettre de comparer des nombres entrés par l'utilisateur à la page précédente et ceux contenus dans un fichier .txt. l'or Help me....travaille en php "simple" mais payé.....!! [ par Maniac ] Salut,voila je n'y connais rien du tout en php, mais je dois "simplement" faire un forum pour un client pour qui je developpe son site...Si qq1 savait Upload de fichier possible sur FREE ??? [ par Phrogg ] Hello, J'utilise un script PHP dans lequel j'utilise l'instruction HTML Je récupère ensuite le fichier en PHP dans la variable $fichier. Je peux copi nom d'utilisateur ?!? [ par niceboy ] Hello !J'aimerais savoir si c'est possible d'obtenir le nom d'utilisateur Windows des visiteurs avec mes pages web, en PHP ou dans un autre langage, j Double téléchargement de fichier [ par adeline63 ] Bonjour,J'utilise un script php qui, après avoir créé 2 fichiers txt, doit permettre à l'utilisateur de les télécharger : l'un après l'autre, en même cacher [ par ekinoks ] g 3 pt kestion ... ;-/ - est t'il possible de cacher la destination d'un téléchargement C.A.D que la personne peu télécharger le fichier mais ne peu quit [ par niketou ] Salut,j'ai cree un script qui cree un fichier quand l'utilisateur ce connecte a la page.L'un d'entre vous sait comment faire pour que des que l'utilis Envoyer des données fournies par l'utilisateur d'un fichier à un autre [ par DreamPush ] Je voudrais envoyer des données par un formulaire HTML à partir d'un fichier nommé "Envoyer.php" à un fichier nommé "Recevoir.php". Que dois-je écrire création d'un fichier word sous linux [ par zarbiman ] Bonjour à tous! est-ce possible de générer un fichier word (ou excel) sous linux? si possible sans rien installer vu que je suis sur un terminal et qu Upload a partir d'un site ? Possible??? [ par supergrey ] Bonjour, je voudrais savoir s'il est possible d'uploader un fichier a partir d'un site web exmple: http://www.monsite.com/fichier.jpgvers le serveur


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 1,170 sec (3)

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