Sécurité & Formulaire

Sécurité & Formulaire - PHP - Programmation

Marsh Posté le 14-07-2006 à 11:55:16    

Bonjour,  
 
Je me pose une question au niveau de la sécurité concernant les formulaires en PHP.
 
En effet, je voudrais savoir comment sécuriser au maximum mon site sachant que j'ai quelques textarea avec editeur wysiwyg.
Je dois donc autoriser le html et bien sûr ne pas avoir de  \' p artout.
 
Peut-on autoriser uniquement certaines balises html ? (ça m'embeterais que des malins s'amusent à mettre des <h1> sur mon livre d'or...)
 
Il faudrais aussi que le javascript ne soit pas interprété et que les injections SQL ne fonctionnent pas.
 
Je connais ces fonctions :
- htmlentities()
- html_entity_decode()
- addslashes()
- stripslaches()
 
Y en a t-il d'autres ? Et comment utiliser ces fonctions à bon escient ?
 
si vous avez des solutions efficaces et ou des url avec des articles intéressants, je suis preneur.
 
Merci d'avance

Reply

Marsh Posté le 14-07-2006 à 11:55:16   

Reply

Marsh Posté le 14-07-2006 à 13:56:05    

htmlspecialchars

Reply

Marsh Posté le 14-07-2006 à 14:16:59    

AlphaZone a écrit :

htmlspecialchars


 
oui, bien sûr  :)  
c'est quasi la même fonction que htmlentities (mais ne convertit pas les accents).
 
personne n'a des liens vers articles avancés sur ce sujet ?

Reply

Marsh Posté le 14-07-2006 à 18:21:01    

Avant de balancer la valeur en bdd (je suppose que tu stockes ça dans une bdd), si c'est du mysql, passe un coup de mysql_real_escape_string dessus (tout en entourant de quotes). Si c'est une autre bdd, je sais pas, mais à défaut d'une telle fonction, addslashes est souvent suffisant.
 
Après avoir récupéré la valeur dans la bdd, utilise htmlentities (ou htmlspecialchars) avant d'afficher.
 
Tout ceci implique que PHP soit configuré avec magic_quotes à off, ce qui est conseillé (dans le cas contraire, utiliser stripslashes avant mysql_real_escape_string).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 14-07-2006 à 18:31:31    

Merci pour ta réponse. C'est ce que je faisais, mais justement cela me pose problème au niveau de htmlentities. Il faut mettre cette fonction pour la sécurité de l'application mais je propose un editeur wysiwyg (couplé aux texarea) pour certains modules.  
comment faire pour que tout soit sécurisé tout en interprétant les balises html ?

Message cité 1 fois
Message édité par twisted le 14-07-2006 à 18:32:19
Reply

Marsh Posté le 14-07-2006 à 22:49:01    

twisted a écrit :

Merci pour ta réponse. C'est ce que je faisais, mais justement cela me pose problème au niveau de htmlentities. Il faut mettre cette fonction pour la sécurité de l'application mais je propose un editeur wysiwyg (couplé aux texarea) pour certains modules.  
comment faire pour que tout soit sécurisé tout en interprétant les balises html ?


 
Soit tu te fais ton propre système de "bbcode" avec à la HFR (en gérant tout au preg_replace), soit tu utilises strip_tags en autorisant seulement les balises que tu souhaites... par contre les autres seront du coup complètement zappés du message originel.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 14-07-2006 à 23:10:35    

strip_tags(), je viens de lire la doc, en effet, très intérressant ;-)
 
merci bcp pour tes réponses

Reply

Marsh Posté le 16-07-2006 à 17:40:09    

sielfried a écrit :

Avant de balancer la valeur en bdd (je suppose que tu stockes ça dans une bdd), si c'est du mysql, passe un coup de mysql_real_escape_string dessus (tout en entourant de quotes). Si c'est une autre bdd, je sais pas, mais à défaut d'une telle fonction, addslashes est souvent suffisant.
 
Après avoir récupéré la valeur dans la bdd, utilise htmlentities (ou htmlspecialchars) avant d'afficher.
 
Tout ceci implique que PHP soit configuré avec magic_quotes à off, ce qui est conseillé (dans le cas contraire, utiliser stripslashes avant mysql_real_escape_string).


 
addslashes est *facilement* contournable !

Reply

Marsh Posté le 16-07-2006 à 18:39:55    

supermofo a écrit :

addslashes est *facilement* contournable !


 
ah bon ?  :??:  
quelle fonction ou quel algorithme passer aux variables récupérées en $_POST pour n'avoir aucun soucis alors ?

Message cité 1 fois
Message édité par twisted le 16-07-2006 à 18:40:11
Reply

Marsh Posté le 16-07-2006 à 19:20:50    

twisted a écrit :

ah bon ?  :??:  
quelle fonction ou quel algorithme passer aux variables récupérées en $_POST pour n'avoir aucun soucis alors ?


 
Oui la solution HFR me semble etre ok ! cf sielfried

Reply

Marsh Posté le 16-07-2006 à 19:20:50   

Reply

Marsh Posté le 16-07-2006 à 21:50:48    

supermofo a écrit :

addslashes est *facilement* contournable !


 
Possible, m'enfin en tout cas c'est mieux que rien.
 
twisted > ben mysql_real_escape_string (si t'es pas sur du mysql, renseigne-toi sur une éventuelle fonction équivalente).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

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