secrutité : où mettre le htmlentities ?

secrutité : où mettre le htmlentities ? - PHP - Programmation

Marsh Posté le 25-09-2010 à 08:21:27    

Bonjour
 
Je voudrai sécuriser l'accès à mes données en utilisant le htmlentities. Toutes mes tables sont accessibles via des classes/méthodes. Et chaque méthode est appelée à partir des pages avec les bons paramètres.
 
Ce sont ces paramètres que je voudrai sécuriser. J'ai 2 solutions :
- soit je les sécurise dans ma page php et ainsi la classe reçoit des paramètres propres.
- soit je ne touche pas au code des pages et je sécurise ces paramètres dans mes classes.
 
Quelles est d'après vous la meilleure méthode ?
 
Dominique


---------------
Domi
Reply

Marsh Posté le 25-09-2010 à 08:21:27   

Reply

Marsh Posté le 25-09-2010 à 10:06:11    

lors de l'affichage
les autres parties du code n'ont pas a essayer de deviner si il faut faire un htmlentities , un json_encode ou un myslq_real_escape_string

Message cité 2 fois
Message édité par flo850 le 25-09-2010 à 10:22:33
Reply

Marsh Posté le 26-09-2010 à 20:52:08    

flo850 a écrit :

lors de l'affichage  
les autres parties du code n'ont pas a essayer de deviner si il faut faire un htmlentities , un json_encode ou un myslq_real_escape_string


 
+1
 
Séparation des couches quoi :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 26-09-2010 à 22:21:54    

flo850 a écrit :

lors de l'affichage


Pas mieux.
 
Une bonne solution (enfin ptet pas pour PHP mais bon...) c'est un langage de templating qui htmlencode tout par défaut, et te laisse marquer des chaînes/objets/impressions comme étant "safe" et à ne pas échapper.

esox_ch a écrit :

+1
 
Séparation des couches quoi :o


Au delà de ça, si tu le fais avant l'affichage et que tu stockes le résultat tu vas te retrouver avec un bordel monstre de trucs pouvant ou non être encodés, et ça va te pêter à la gueule.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-09-2010 à 08:45:54    

masklinn a écrit :


Pas mieux.
 
Une bonne solution (enfin ptet pas pour PHP mais bon...) c'est un langage de templating qui htmlencode tout par défaut, et te laisse marquer des chaînes/objets/impressions comme étant "safe" et à ne pas échapper.


 
En effet, un peu comme dans les vrai langages/frameworks (genre Rails) :D. Par contre c'est vite la galère de se battre contre PHP pour le plier dans ce sens j'ai l'impression.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 27-09-2010 à 08:55:31    

esox_ch a écrit :

En effet, un peu comme dans les vrai langages/frameworks (genre Rails) :D. Par contre c'est vite la galère de se battre contre PHP pour le plier dans ce sens j'ai l'impression.


Bah je crois pas que tu puisses le faire si tu utilises PHP comme langage de templating (alors qu'il est fait pour, un peu). Mais si tu passes genre par Smarty, ça devrait être possible/supporté.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-09-2010 à 08:58:45    

En PHP la seule possibilité que je voies c'est de créer une classe qui vienne wrapper les strings [:spamafote].. Et même comme ça, ça sentira encore la bidouille


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 27-09-2010 à 09:16:24    

sauf erreur , avec symfony, si tu utilises les helper, tout est encodés

Reply

Marsh Posté le 27-09-2010 à 09:39:54    

flo850 a écrit :

sauf erreur , avec symfony, si tu utilises les helper, tout est encodés


 
C'est justement ça le problème. Si tu oublies un helper où que ce soit, tu risques de te faire injecter un joli XSS.
On avait le même soucis avec Rails (il fallait utiliser un helper "h" pour sécuriser) jusqu'à la sortie de Rails3, qui maintenant gère ça de manière intelligente :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 27-09-2010 à 09:55:33    

esox_ch a écrit :


 
C'est justement ça le problème. Si tu oublies un helper où que ce soit, tu risques de te faire injecter un joli XSS.
On avait le même soucis avec Rails (il fallait utiliser un helper "h" pour sécuriser) jusqu'à la sortie de Rails3, qui maintenant gère ça de manière intelligente :o


[:romf]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-09-2010 à 09:55:33   

Reply

Marsh Posté le 27-09-2010 à 21:13:54    

perso je me suis fait un filtre paramétrable qui me code automatiquement tous les champs de ma DB en fonction des paramètres d'entrée ou de sortie.
Ce filtre est placé dans mon MultiactionContrôler d'utiliser, de sauvegarder ou d'afficher les données.


---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

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