Parametres par URL & "Securite"

Parametres par URL & "Securite" - PHP - Programmation

Marsh Posté le 15-04-2004 à 15:09:22    

bonjour a tous!
 
je suis en train de finir une FAQ dynamique, avec a peu pres le meme fonctionnement que ce qu'ils nomment un "forum" a l'APJV http://www.afjv.com/actu_forums.htm :D
Grosso modo c du post de questions dans des rubriques préfaites, et du post de reponses a ces questions... Bref, rien de bien sorcier :sweat: [:aras qui rit]
Pour faire fonctionner tout ca, j'utilise des parametres, comme par exemple

action=question/reponse&rubriqueID=3&msgID=1&jecpokoi=472

, que je passe en GET a d'autres pages, cad par l'URL. La non plus, rien de nouvo sous le soleil [:skyx@v]
Seulement jme demande: toutes ces variables passées par URL, c po "dangereux" :??: Voir des vrais ID d'enregistrements MySQL, ca peut po etre genant :??:
Si mon utilisateur s'amuse a trifouiller ces parametres, il pouré ptet bien faire des conneries...
 
Je suis encore newbie des langages & des "concepts" liés a l'Internet, donc je me demande [:airforceone]
 
MERCI D'AVANCE :jap:


Message édité par lkolrn le 15-04-2004 à 15:36:38
Reply

Marsh Posté le 15-04-2004 à 15:09:22   

Reply

Marsh Posté le 15-04-2004 à 15:43:52    

je me pose la meme question...
c'est vrai que si t'as une url du type :
 
delete.php?id=$id
 
ou la page efface l'id correspondant, ya rien de difficile à effacer toute la table ^^

Reply

Marsh Posté le 15-04-2004 à 15:48:29    

il existerait po un moyen de faire des GET (par le biais de liens hypertexte ou de 'header()') en rendant les parametres "invisibles" :??:
 
(je conçois qu'il est possible de "masquer" ses parametres en leur donnant des noms bidon, mais c un peu le "niveau 0" de l'invisibilite! ^^)


Message édité par lkolrn le 15-04-2004 à 15:50:33
Reply

Marsh Posté le 15-04-2004 à 16:07:50    

Dans le cas d'un formulaire tu peu faire
 
<form name=f onSubmit='envoi()'>
 
avec en javascript
 
function envoi()
{
     f.method = 'POST';
     f.action = $Lien ;
     f.submit();
}
 
Dans la page qui traite les données tu récupère les valeurs avec $_POST["nomVariable"] et les valeurs n'apparaissent pas dans l'url.


Message édité par boulax le 15-04-2004 à 16:08:47

---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 15-04-2004 à 16:28:35    

SANS javascript, ca donnerait koi :??: :D

Reply

Marsh Posté le 15-04-2004 à 16:41:03    

il faudrait aussi faire une vérif sur l'autre page, pour tester le referent ... s'il n'existe pas (càd si le lien a été entré à la main) tu stop le script
 
++
 
 
Edit : Attention toutefois, car cette variable peut "facilement" etre modifiée par un utilisateur un peu bidouilleur...
 
Ah oui, la variable est $_SERVER['HTTP_REFERER']


Message édité par Dj YeLL le 15-04-2004 à 16:45:12
Reply

Marsh Posté le 15-04-2004 à 16:41:46    

<form method="post" action="tonscript.php">
 
mais de toute façon, si un utilisateur veut foutre le bordel il pourra quand même ... c'est de ton côté qu'il faut faire en sorte que tes données soient protégées ... par exemple en évitant les scripts stype delete.php où en les protegeant (mot de passe par exemple). Mais si tu ne fais que de la lecture, pourquoi connaître l'id du message serait dangereux ? sauf si tu as des données sensibles mais tu peux toujours imaginer un système de privilèges.

Reply

Marsh Posté le 15-04-2004 à 16:42:35    

bien sur que c'est dangereux si vos scripts derrière font des maj / suppressions sur la base.
dans ce genre de cas, il faut vérifier que l'id reçu en paramètre soit bien du type attendu. (integer en général) et que l'utilisateur aie (?) bien le droit d'agir sur cet enregistrement.


Message édité par dropsy le 15-04-2004 à 16:43:01
Reply

Marsh Posté le 15-04-2004 à 16:54:42    

okok [:skyx@v]
 
Merci de m'avoir mis sur la piste :hello:

Reply

Marsh Posté le 15-04-2004 à 16:57:47    

Effectivement on peut trafiquer les requêtes MySQL via les arguments passés mais, sans vérifier son type, un bon traitement de l'argument (par exemple en le mettant entre quotes sans oublier de doubler toutes les quotes à l'intérieur) ne pourra que faire échouer la requête. À toi de vérifier le type pour fournir une erreur ciblée

Reply

Marsh Posté le 15-04-2004 à 16:57:47   

Reply

Marsh Posté le 15-04-2004 à 18:13:48    

Tentacle a écrit :

<form method="post" action="tonscript.php">
 
mais de toute façon, si un utilisateur veut foutre le bordel il pourra quand même ... c'est de ton côté qu'il faut faire en sorte que tes données soient protégées ... par exemple en évitant les scripts stype delete.php où en les protegeant (mot de passe par exemple). Mais si tu ne fais que de la lecture, pourquoi connaître l'id du message serait dangereux ? sauf si tu as des données sensibles mais tu peux toujours imaginer un système de privilèges.


 
genre un peu dynamique du type : md5('password de protection'.strftime("%D%M%Y" ))
 
au retour tu contrôles ta chaine md5
 
Le seul souci est de générer la page à 23h59 et d'avoir le clic à 0h00 le lendemain.


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 26-04-2004 à 22:24:47    

T509 a écrit a écrit :

Le seul souci est de générer la page à 23h59 et d'avoir le clic à 0h00 le lendemain.


Parce que ??

Reply

Sujets relatifs:

Leave a Replay

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