Risque de sécurité ?

Risque de sécurité ? - PHP - Programmation

Marsh Posté le 18-06-2011 à 10:42:18    

Bonjour,
 
J'ai une petite question concernant la sécurité de mon site :
J'ai un formulaire invitant l'utilisateur à rentrer l'url d'une image.
Cette url est traitée (suppression des balises html, transformation des guillemets en caractères html, traitement anti-injection sql) puis j'affiche le résultat dans un <img src="$resultat" max-width="50" max-height="50"/>
 
Y a-t-il une vulnérabilité ?
 
Merci d'avance !


Message édité par nisalon_caje le 18-06-2011 à 10:42:47
Reply

Marsh Posté le 18-06-2011 à 10:42:18   

Reply

Marsh Posté le 18-06-2011 à 12:16:35    

je pense que si t'as bien fait tout ce que tu dis avoir fait ça devrait être bon, après en regardant le bout de code qui fait tout ça peut-être qu'il y aurait à redire... on sait jamais.

 

PS: si tu n'enregistres pas l'url en base de donnée, le traitement contre les injections sql est inutile


Message édité par caribouuu le 18-06-2011 à 12:22:39

---------------
Bla (blaa bbla)
Reply

Marsh Posté le 18-06-2011 à 12:34:43    

tiens, voila le code que je lance :)
(et oui je compte enregistrer l'url dans la bdd)

Code :
  1. $txt = strip_tags($txt);
  2.     $txt = htmlentities($txt, ENT_QUOTES, "UTF-8" );
  3.     $txt = stripslashes($txt);
  4.     $search = array("\\", "\0", "\x1a", "'", '"');
  5.     $replace = array("\\\\", "\\0", "\Z", "\'", '\"');
  6.     $txt = str_replace($search, $replace, $txt);
  7.     $txt = addcslashes($txt, '%_');


---------------
http://nisalon.labrute.com/
Reply

Marsh Posté le 19-06-2011 à 13:14:55    

Je pense pas qu'il y ait de vulnérabilité évidente là... sinon on m'a souvent conseillé d'utiliser la fonction mysql_escape_real_string pour protéger les variables qui seront contenues dans la requête SQL, a la limite cette seule fonction serait suffisante, ton image tu la renommes au moment de la sauvegarder, du coup pas de problème de tags html and co... je laisse quelqu'un confirmer, un peu peur de te dire une connerie.

 
Citation :

mysql_real_escape_string() protège les caractères spéciaux de la chaîne unescaped_string, en prenant en compte le jeu de caractères courant de la connexion link_identifier. Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée.

 

mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un slash aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.

 

Cette fonction doit toujours (avec quelques exceptions) être utilisée pour protéger vos données avant d'envoyer la requête à MySQL.

 

http://php.net/manual/fr/function. [...] string.php

 


EDIT: ah je viens de me rappeler que tu veux pas sauvegarder l'image mais juste lla linker avec l'url, dans ce cas oui tes différents traitements sont judicieux, mea culpa, reste l'utilisation de mysql_escape_real_string qui est considérée comme très sécurisée.


Message édité par caribouuu le 19-06-2011 à 13:22:06

---------------
Bla (blaa bbla)
Reply

Marsh Posté le 19-06-2011 à 13:30:03    

j'évite la fonction mysql_escape_string() en fait car, il me semble qu'elle nécessite une connexion à la bdd, et quand je fais le traitement générique écrit ci-dessus, je ne l'ai pas nécessairement. C'est pour ca que j'ai un str_replace qui fait la mm chose


---------------
http://nisalon.labrute.com/
Reply

Marsh Posté le 19-06-2011 à 13:52:44    

ben rien t'empêche d'ouvrir la connection mysql, de faire ton traitement et d'enregistrer tout de suite. Enfin cela dit tu peux aussi faire comme tu as fait je pense pas que ça pose de problème.


---------------
Bla (blaa bbla)
Reply

Marsh Posté le 29-06-2011 à 23:38:58    

Dès que tu affiches une url sur ton site, il y a une vulnérabilité potentielle. Le mec peut très bien afficher un gif 1x1, faire croire à un mime type image et écrire du code JS evil ou je ne sais quelle merde.
 
La seule parade qui me vient à l'esprit, c'est d'ouvrir l'image avec l'extension GD2, la redimensionner si nécessaire, l'enregistrer (donc proprement et seulement avec les bits d'image) en local et utiliser cette image. Comme l'image est sur ton domaine, tu gagneras en plus en SEO. Que du bénef :)


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 30-06-2011 à 10:12:09    

nisalon_caje a écrit :

j'évite la fonction mysql_escape_string() en fait car, il me semble qu'elle nécessite une connexion à la bdd


Non.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-07-2011 à 17:59:34    

@skeye +1
 
C'est une fonction php, rien de plus.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed