secrutité : où mettre le htmlentities ? - PHP - Programmation
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
Marsh Posté le 26-09-2010 à 20:52:08
flo850 a écrit : lors de l'affichage |
+1
Séparation des couches quoi
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 |
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.
Marsh Posté le 27-09-2010 à 08:45:54
masklinn a écrit : |
En effet, un peu comme dans les vrai langages/frameworks (genre Rails) . Par contre c'est vite la galère de se battre contre PHP pour le plier dans ce sens j'ai l'impression.
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) . 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é.
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 .. Et même comme ça, ça sentira encore la bidouille
Marsh Posté le 27-09-2010 à 09:16:24
ReplyMarsh 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
Marsh Posté le 27-09-2010 à 09:55:33
esox_ch a écrit : |
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.
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