|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Bonjour à tous !
Je suis nouveau, et pas très doué alors si je met ce message au mauvais endroit ou dis des bêtises, soyez gentil de pas me taper dessus et je modifierai.... J'ai réalisé un site dont la navigation se passe comme ceci : index2.php?page=page01 index2.php?page=page02 [...] et dont le script central est : Code :
Etant un brin parano, j'ai rajouté au tout début de mon script un header location de sécurité comme ceci : Code :
-Première question : D'un point de vue sécurité mon header location se justifie-t-il ou finalement j'aurai pu tout aussi bien le supprimer ? Seulement développant mon site j'ai aujourd'hui besoin de rajouter d'autres variables et d'avoir une adresse du style : "site.com/index2.php?page=page01&name=var1" -Deuxième question D'un point de vue sécurité, est-ce grave si les visiteurs peuvent taper ce qu'ils veulent dans les variables ? Etant toujours parano, j'ai modifié mon script : Code :
"site.com/index.php?page=page01&name=variableinconnue" Cela retourne bien effectivement automatiquement à la page d'accueil index.php. Mais le problème c'est que si l'on écrit cela : "site.com/index.php?page=page01&nameexample=variableinconnue" ou même "site.com/index.php?page=page01&XXXX" Le site ne retourne pas a l'index.php mais reste sur page=var tout court. Voilà ce n'est peut être pas un vrai problème que les gens puissent mettre ce qu'ils souhaitent dans XXXX mais cela me chiffonne, à mon avis vous aurez déjà répondu à ma seconde question. Une piste que l'on m'a donné est celle-ci : Code :
Je l'ai fais et ça fonctionne, on peut même voir les résultats du tableau à l'aide d'un print_r($pages_autorisees); -Troisième question Que faut-il écrire dans le if comme condition pour qu'il vérifie à la fois ce qu'il y a dans page et dans name et qu'il ramène au départ si les données insérées ne sont pas contenues dans le tableau des données autorisées ? Si quelqu'un avait la connaissance et la joie de m'aider ce serait vraiment sympa Si vous trouvez une autre solution, c'est tout bon aussi ! Merci beaucoup d'avance ! |
||||||||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() |
C'est vraiment pas top de faire tes appels de page comme ca! D'autant que si tes pages sont limitees (tu les enumeres dans ton switch), et qu'elles font appel a des variables differentes, cela ne presente aucun interet: autant utiliser des pages differentes (page1.php, page2.php...).
Ne pas appeler un fichier directement par une variable comme tu le fais ici, et traiter les variables que tu recois (par un addslashes par exemple) est bien plus efficace qu'enumerer les possibilites. Regarde quand meme les topics sur la securite et ta config php (phpinfo) pour voir si ton serveur court des risques. |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Citation:
(je suis un peu une quiche et je débute) Citation:
|
||
|
|
00
|
|
|
#4 | |||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 773 ![]() |
J'ai du rater un détail, parce que ça me semble bien compliqué comme système, donc fragile. Quelques questions en vrac :
Code :
A quoi sert $page ???? Citation:
Je dirai même plus : si ton switch fait son boulot d'aiguillage, ce qui est une bonne idée, alors avoir des contrôles en doublon * au mieux ne sert à rien, * au pire sera une source d'erreurs. D'une manière générale en informatique, toute opération est une source d'erreur. A fortiori les doublons Mon avis serait donc : concentre-toi sur le switch et fais le parsing de ton url comme il faut en traitant les cas connus (arguments attendus), les autres (erreurs d'url ou acte hostile) allant sur une page par défaut (index, page d'erreur, etc...). Et fais-le en un seul endroit. |
|||
|
|
00
|
|
|
#5 | ||||||||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Citation:
Je viens de retoucher mon code et le code de ma page principale (index2.php) ressemble maintenant à ça : Code :
Citation:
D'ailleurs, je viens de résoudre mon problème grâce à Ereg ! Bon c'est pas ce qu'il y a de plus optimisé, donc je vous livre le code le plus clairement possible avec commentaires, je rappelle que les saisies que je veux autorisées sont de ce style index2.php?page=page01 ou index2.php?page=page01&name=jean : Code :
(pour le moment j'en suis à empecher et à rediriger toute saisie différente de celles autorisées, mais j'ai 1 variable ! comment survivre le jour où j'aurai un adressage de ce type : index2.php?page=page01&name=marc&sexe=masculin&age=32&ville=marseille .... snif ! |
||||||||
|
|
00
|
|
|
#6 | |||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 773 ![]() |
Citation:
). Or, il est impératif de penser à l'évolution et à la maintenance du code dès le début, sinon tu vas te retrouver avec des sacs de nouilles assez pénibles à manipuler. Pourquoi ne pas essayer quelque chose de plus linéaire : Code :
NB : avec ce système de header() qui rappelle les pages index.php, ce ne sera pas forcément simple d'afficher des messages d'erreur |
|||
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Salut Hérode !
Tout d'abord merci pour ta réponse et ton aide !!! (ce que tu as dû écrire en 10min m'a pris 5 heures) Je viens de regarder ton code, d'essayer de le comprendre (je ne connaissais pas vraiment l'usage des fonctions utilisateurs ni de choses comme array_key_exists ...) et d'essayer de le modifier pour mon usage. Seulement il y a encore et toujours plusieurs soucis : Code :
Mon premier souci, et le moindre, c'est que je n'arrivais pas à faire continuer la page quand une bonne adresse était rentrée. Exemple avec cette adresse : index2.php?page=page01&name=jean Cela me retournait ma phrase "ceci est la fin ..." mais pas la suite de ma page php ! La page se bloque sur la fonction processfin et ... c'est tout ! J'ai essayé de mettre un continue ou d'autres choses, sans succès... Pour finir j'ai finalement divisé le truc en 2, mettant en index2.php ce script et en index2_corps.php le reste de la page. Avec un include en fin, cela a au moins le mérite de fonctionner. Mon second souci, que j'ai détaillé dans les commentaires de ce script c'est qu'il ne fait pas la différence 2 type d'adressage différents, dans le cas où la variable page existe et que la valeur de celle-ci est page01 : index2.php?page=page01 La variable Name n'existe pas, pour autant l'adresse est valide, donc je ne peux pas faire une redirection systématiquement quand name n'existe pas. index2.php?page=page01&variablebizarre=jean La variable Name n'existe toujours pas, étant remplacée par une variable bizarre, et là par contre, je devrai balancer une redirection ! Mon troisième souci, est l'adressage que l'on peut rajouter à la fin. Je m'explique, prenons le cas ou le script fonctionne bien : index2.php?page=page01&name=jean Cela me retourne ma phrase de fin, bien. Dès que je modifie ma valeur "jean" en disons "theophile", hop phrase d'erreur: :" ATTENTION la variable \$name existe chez Page01 MAIS sa valeur n'est pas autorisée ! " impeccable ! Et là je teste d'écrire : index2.php?page=page01&name=jean&variablebizarre=theophile Là, il ne se passe rien, ma phrase de fin est toujours là ! On peut rajouter autant d'argument que l'on veut, tant que les 2 premiers sont renseignés comme valides. Alors que je souhaite que cela provoque une erreur ! Bon voilà ... tu vas sûrement me trouver tatillon, mais vu que je suis méfiant ... lol |
||
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 773 ![]() |
Bon, je n'aime pas beaucoup faire ce type de réponses car ça donne l'impression d'envoyer ballader les gens, mais... ton problème essentiel ici, c'est que tu ne sais pas coder. Avant de programmer quelque chose dans quelque langage que ce soit, il est impératif d'étudier
- les bases de l'algorithmique - les bases du langage Tu as attaqué les bases du langage, apparemment, mais sans te préoccuper de l'algo. Mauvais plan. Les réponses à tes trois questions sont simplissimes : c'est de l'algo de base (et deux minutes de réflexion derrière). Si tu ne maitrises pas ça, mes réponses ne te serviront pas de toutes manières, à moins que je n'écrive moi-même ton programme. Mais en ce cas, faut me payer au même tarif horaire que mon patron actuel Je crois qu'il y a sur ce site de bons tutoriels pour les bases de l'algo. Les livres sur le sujet ne manquent pas non plus. Idem en général pour les bases de PHP et les techniques standard de programmation. Une lecture indispensable. Bon courage ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com