Securiser son site PHP - PHP - Programmation
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 !'); |
Marsh Posté le 07-03-2003 à 13:58:58
benwar a écrit : Salut je cherche a sécuriser mon site php.
|
Ben tu testes ta variable AVANT de lancer la requête. Je vois pas où est le problème.
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
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...
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 ?.
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 ?. |
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.
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
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)
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.
Marsh Posté le 11-03-2003 à 20:27:57
MagicBuzz a écrit : |
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
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
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.