OVH Cloud OVH Cloud

PHP, SQL et securite

12 réponses
Avatar
geo75
Bonjour,

Je me posais une question sur la sécurité dans les scripts PHP,

Comment faire pour sécuriser les acces a la base de données ?

en effet meme avec post on arrive a lire les variables.

si j'envoi en post dans mon script

fiche_info.php?client=120&compte=10

comment puis je empecher celui ci puisse par exemple remplacer
simplement par fiche_info.php?client=121&compte=10
ou 122
etc...
Merci de votre aide

2 réponses

1 2
Avatar
Jean-Marc Molina
Surfoo wrote:
Tu confonds POST et GET là.
L'exemple que tu montre c'est GET : les données sont envoyés via
l'URL. En POST les données sont envoyés « cachées » via une 2ème
requête HTTP.

Donc dans ton cas il faut utiliser POST et non GET.


À une époque pas si lointaine certains serveurs Web permettaient de traiter
les POST comme des GET puisqu'ici on aurait pu accéder aux numéros par de
simples accès aux variables $client et $compte. Souvenez les variables
globales... J'en ai froid dans le dos :)

Avatar
Jean-Marc Molina
geo75 wrote:
Je me posais une question sur la sécurité dans les scripts PHP,

Comment faire pour sécuriser les acces a la base de données ?

en effet meme avec post on arrive a lire les variables.

si j'envoi en post dans mon script

fiche_info.php?client0&compte

comment puis je empecher celui ci puisse par exemple remplacer
simplement par fiche_info.php?client1&compte
ou 122


En plus de l'authentification il faut aussi valider les paramètres qui sont
passés à un script via l'URL. Ici bien vérifier que "client" et "compte"
sont des numériques, à l'aide de la fonction "is_numeric" par exemple. Pour
d'autres types de données il faut passer par les autres fonctions "is_" ou
valider une valeur contre une expression régulière ("/[0-9]+/"...).

Cette technique de validation des paramètres d'une URL s'applique aussi aux
fonctions, aux données en provenance d'un formulaire (passées en POST ou en
GET peu importe)... J'insiste sur le fait que toutes les données doivent
être contrôlées et validées, aucune exception en matière de sécurité. L'un
des risques pour la BDD c'est de se prendre de belles injections SQL à base
de DELETE et autres abominations. Un autre classique est d'inclure un script
nommé à partir de la valeur d'un paramètre : <?php include
("client_$client.php") ?>... Les idées ne manquent pas :|

D'après ton exemple si il s'agit de développer un espace sécurisé pour des
clients, je te recommande plutôt d'opter pour une solution pro (script pro,
composant d'authentification d'un CMS, forum comme phpBB...). La sécurité
n'est pas à prendre à la légère, surtout quand on est pas expert dans le
domaine. Vérifier aussi que ton hébergeur supporte SSL pour que les données
transitant entre les clients et les serveurs sont cryptées. Mais que cela ne
t'empêche pas d'en apprendre plus sur le sujet en testant tout ça dans ton
coin.

1 2