Securiser son site PHP

Securiser son site PHP - PHP - Programmation

Marsh Posté le 07-03-2003 à 12:31:38    

Salut je cherche a sécuriser mon site php.
 
J'interoge ma table article (par exemple) avec un requette sql
 


$sql = "SELECT titre FROM $table WHERE id='$id'";
$req = mysql_query($sql) or die('page non disponible !<br>'.$sql.'<br>'.mysql_error());
 
$titre = mysql_result($req,titre);
 
echo "$titre :";
 


 
je recupaire $id par :

$id=$_GET["id"];


 
le probleme est que si un mec modifie l'url exemple : http://www.monsite.com/index.php?i [...] 7987987987
et que l'id 5665465654654897987987987 n'existe pas dans ma table article je v avoir une belle erreur du style :  
 

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 18 in /home/tutu/www/toto/index.php on line 279


 
Voila et je voudrais ne pas afficher ce message mais afficher par exemple "page non dispo" et meme en modifien mon code par :

$req = mysql_query($sql) or die('page non disponible !');


Le message est toujours là !
 
J'ai le l'article sur la sécu de Nexen mais j'ai pas vraiment compris.
 
Voila.
 
 

Reply

Marsh Posté le 07-03-2003 à 12:31:38   

Reply

Marsh Posté le 07-03-2003 à 13:07:43    

Tu peux utiliser plusieurs méthodes pour ca, dont :
 

if (mysql_num_rows($req) == 0) die('page non disponible !');

Reply

Marsh Posté le 07-03-2003 à 13:47:17    

@ est ton ami ;)

Reply

Marsh Posté le 07-03-2003 à 13:58:52    

gizmo a écrit :

@ est ton ami ;)


 
 
??  :heink:

Reply

Marsh Posté le 07-03-2003 à 13:58:58    

benwar a écrit :

Salut je cherche a sécuriser mon site php.
 
J'interoge ma table article (par exemple) avec un requette sql
 


$sql = "SELECT titre FROM $table WHERE id='$id'";
$req = mysql_query($sql) or die('page non disponible !<br>'.$sql.'<br>'.mysql_error());
 
$titre = mysql_result($req,titre);
 
echo "$titre :";
 


 
je recupaire $id par :

$id=$_GET["id"];


 
le probleme est que si un mec modifie l'url exemple : http://www.monsite.com/index.php?i [...] 7987987987
et que l'id 5665465654654897987987987 n'existe pas dans ma table article je v avoir une belle erreur du style :

 

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 18 in /home/tutu/www/toto/index.php on line 279


 
Voila et je voudrais ne pas afficher ce message mais afficher par exemple "page non dispo" et meme en modifien mon code par :

$req = mysql_query($sql) or die('page non disponible !');


Le message est toujours là !
 
J'ai le l'article sur la sécu de Nexen mais j'ai pas vraiment compris.
 
Voila.
 
 
 


 
Ben tu testes ta variable AVANT de lancer la requête. Je vois pas où est le problème.  :heink:

Reply

Marsh Posté le 07-03-2003 à 15:56:33    

Pas pas moyen de bosser plutôt avec des variables en POST plutôt qu'en GET :heink:
 
Parceque GET + Sécurité, je demande à voir...
 
Déjà en POST on est jamais certain que le gars bidouille pas les entêtes HTTP de son navigateur, mais alors en GET...

Reply

Marsh Posté le 07-03-2003 à 15:57:27    

Pour info, avec ce genre de conneries, j'ai un pote qui s'est acheté 5 XBox et 5 PS2 chez alapage pour la modique somme de 5 ?.


Message édité par MagicBuzz le 07-03-2003 à 15:57:50
Reply

Marsh Posté le 07-03-2003 à 16:35:26    

benwar a écrit :


 
 
??  :heink:  


 
ca masque les message d'erreur.

Reply

Marsh Posté le 07-03-2003 à 16:49:16    

MagicBuzz a écrit :

Pour info, avec ce genre de conneries, j'ai un pote qui s'est acheté 5 XBox et 5 PS2 chez alapage pour la modique somme de 5 ?.

:heink:


---------------
[ Canon EOS 30D ] (Grip + Canon 50mm f/1.4 + Canon 18-55mm USM + Tamron 70-300mm Di LD Macro)  [Galerie perso]
Reply

Marsh Posté le 11-03-2003 à 17:01:05    


Ben quand tu passes comme un crétin les informations d'un formulaire en querystring, y'a rien de plus simple que d'éditer cette dernière en foutant ce que tu veux. Sur certains sites codés comme des merdes, tu peux ainsi changer le montant de la transaction bancaire au moment du paiement par carte bleue.
 
Ainsi un pote a juste viré les deux derniers chiffres du montant de sa commande et a commandé pour 5 ? une facture de plus de 500 ?.
 
La transaction bancaire étant contractuelle, le propriétaire du site web n'a aucun recours face à cette pratique.
 
Alors quand je vois des sites passer en querystring des infos importantes, je ne peux m'empêcher de mouiller mon jean.


Message édité par MagicBuzz le 11-03-2003 à 17:01:44
Reply

Marsh Posté le 11-03-2003 à 17:01:05   

Reply

Marsh Posté le 11-03-2003 à 17:24:49    

D'accord à 100% avec MagicBuzz !
 
Le truc à avoir en tête quand on cherche sécuriser un site, c'est de ne faire aucune confiance à TOUT ce qui vient du client. Que se soit en GET, en POST ou même par Cookie.
 
Une des solution que j'essaye de mettre en place pour un site sur lequel je bosse se résume ainsi.
 
D'abord, utiliser les sessions.
 
Toute requête HTTP n'ayant pas un ID de session valide est renvoyé vers la page d'accueil.
 
Ensuite, toutes les infos reçues du client sont vérifiées.
 
1- Suivant leur type. Par exemple, si j'attend une date, je vérifie qu'elle est valide, et éventuellement dans une plage acceptable.
 
2- Pour les chaînes, tous les caractères dangeureux sont "échapés".
 
3- Si j'attend un id, comme dans ton exemple, il vient sans doute d'une liste que je lui ai proposé. Cette liste est conservé dans un "contexte" en session. L'id reçu est alors comparé à ceux envoyés, et s'il ne fait pas partie de la liste, ben la sanction dépend de mon humeur :D
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 11-03-2003 à 17:31:15    

MagicBuzz a écrit :

Pour info, avec ce genre de conneries, j'ai un pote qui s'est acheté 5 XBox et 5 PS2 chez alapage pour la modique somme de 5 ?.


 
et ils marchent toujours comme ça ? (:D)


Message édité par Master_Jul le 11-03-2003 à 17:32:46
Reply

Marsh Posté le 11-03-2003 à 17:39:43    

Certains son corrigés, (notamment celui du coup des consoles à 5 ? ;) )
 
Mais d'autres doivent certainement toujours avoir ce genre de trucs.

Reply

Marsh Posté le 11-03-2003 à 20:27:57    

MagicBuzz a écrit :


Ben quand tu passes comme un crétin les informations d'un formulaire en querystring, y'a rien de plus simple que d'éditer cette dernière en foutant ce que tu veux. Sur certains sites codés comme des merdes, tu peux ainsi changer le montant de la transaction bancaire au moment du paiement par carte bleue.
 
Ainsi un pote a juste viré les deux derniers chiffres du montant de sa commande et a commandé pour 5 ? une facture de plus de 500 ?.
 
La transaction bancaire étant contractuelle, le propriétaire du site web n'a aucun recours face à cette pratique.
 
Alors quand je vois des sites passer en querystring des infos importantes, je ne peux m'empêcher de mouiller mon jean.


 
Ouep ça je sais bien que techniquement y'a pas de prob, ce qui m'étonne c'est juste qu'il y ait aucun contrôle comptable derrière quoi  :??:


---------------
[ Canon EOS 30D ] (Grip + Canon 50mm f/1.4 + Canon 18-55mm USM + Tamron 70-300mm Di LD Macro)  [Galerie perso]
Reply

Marsh Posté le 11-03-2003 à 22:40:37    

ben quand on est assez goret pour faire passer un montant de facture en querystring, on est généralement assez goret pour rien tester à l'arrivée ;)
 
c comme quand je fais un bug... quitte à planter, autant faire un kernel panic, sinon c'est pas la peine :sarcastic: :D

Reply

Sujets relatifs:

Leave a Replay

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