supermofo a écrit :
Tant que tu sais exactement à quoi t'attendre au niveau des paramètres, c ok.
La meilleure méthode sera la plus rapide. Au niveau rapidité (j'ai pas fais les
test),
j'imagine qu'une comparaison d'entier est plus rapide qu'une comparaison
alphanumérique.
De meme que la comparaison alphanumérique (ctype_alnum) devrait etre plus rapide
qu'un regexp.
|
Pardonne le caractère cru de mon langage, mais c'est du branlage de mouches.
Citation :
Il est clair que le hash rend un peu "gore" dans une url. La dessus on est d'accord. Mais alors pourquoi l'utiliser ? La réponse est simple : rendre la tache plus difficile à un hacker.
|
L'obfuscation n'est pas une méthode fiable en matière de sécurité. Les exemples sont légion.
Citation :
Je m'explique en voyant une url du type url?page="motSEO", on voit immédiatement que l'include est utilisé.
|
Non.
Citation :
De plus si le filtrage est mal fait, la porte "peut s'ouvrir".
|
L'important est donc de bien faire le filtrage, pas de passer du temps à masquer un filtrage mal fait. D'autant qu'un filtrage efficace est relativement simple à mettre en oeuvre.
Citation :
Avec une page du type url?page="5", on peut penser qu'il s'agit soit d'une page generee en SQL, soit d'un tableau et dans tous cas une variable récupère cette valeur. Ici page.
|
Tiré par les cheveux. De toute façon la majorité des paramètres passés à une page sont utilisés dans des requêtes de base de données. Donc sans grand intérêt.
Citation :
Conclusion on identifie une variable du script sans avoir le script sous les yeux. Si globals est ON on casse rapidement ce script.
|
"register_globals ON" est une des pires idées qu'on puisse avoir d'un point de vue sécurité. C'est même pas la peine de parler de sécuriser une application PHP avec register_globals activé.
Le coeur de la sécurité en PHP (et en développement web) ce sont les points d'entrée de l'application. Par point d'entrée on entend les paramètres des URLs de l'application. Tout ce qui permet d'envoyer des données à l'application. Une application sécurisée se caractérise en premier lieu par:
- un minimum de points d'entrée (le strict nécessaire)
- une validation systématique des données passant par les points d'entrée
(la sécurité d'une application se mesure aussi à l'aune de sa robustesse et des informations qu'elle donne en sortie, mais c'est hors de propos ici)
Si les paramètres d'une page sont systématiquement vérifiés, l'intérêt pour l'attaquant de les connaître - voire de connaître leur utilité - est nul. C'est le but vers lequel tendre.
Citation :
Avec une page url?page="mot"&id="5". Cette fois est mal vu du coté des robots.
|
Certes.
Citation :
Par contre avec url/".mot."/".id."/ et un rewrite qui ne recupere que le "id". On gagne:
- une url unique dans tous les cas
- le mot est toujours visible pour les bots
- le filtrage est doublé puisque nous profitons du filtrage url rewriting ET de celui PHP
- on obtient une url qui "cache" cette faille potentielle et qui peut éviter des problèmes ( Pour l'effort , je pense que cela vaut le cout )
|
D'accord pour les 3 premiers points, aucune différence pour moi sur les points suivants. En général quand il y a des chiffres dans une URL style http://mon.site.fr/12/5/ c'est rarement des noms de répertoire. Faire l'hypothèse de valeurs stockées dans des variables est pas déplacé.
Le fait que ça cache le nom des variables est pas une mauvaise chose en soi, mais la sécurité d'un script ne devrait pas reposer sur ce paramètre. Jamais.
L'obfuscation est quelque chose que je considère personnellement comme une perte de temps. Le plus important, c'est de se demander ce qui est important à un attaquant potentiel. Le nom des variables n'est pas important, par contre la version de php si par exemple. Faire ce tri là est important.
Par ailleurs, il est préférable de passer du temps à blinder ses pages qu'à obfusquer les manquements potentiels à la sécurité. C'est une bien meilleure façon de sécuriser ses scripts et d'éviter un faux sentiment de sécurité.
---------------
Loose Change Lies | Bars | Last.fm