SQL Procédural -> Sécurisation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : SQL Procédural -> Sécurisation

Re: SQL Procédural -> Sécurisation

par stealth35 » 27 avr. 2010, 19:24

ouai et pour continuer dans la lancer de Dr@ke, on peu aussi faire des requêtes préparer en procédural et avec l'extension mysql

exemple de la doc mysql
mysql_connect('127.0.0.1', 'root');
    
mysql_query("PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'");
mysql_query("SET @a = 3;");
mysql_query("SET @b = 4;");
    
$req = mysql_query("EXECUTE stmt1 USING @a, @b");
    
var_dump(mysql_fetch_assoc($req));

/*
array(1) {
  ["hypotenuse"]=>
  string(1) "5"
}
*/

Re: SQL Procédural -> Sécurisation

par AB » 27 avr. 2010, 19:05

J'ai mis cette information car je la trouvais intéressante et peu documentée sur le net.
Effectivement ce n'est pas une utilisation courante, mais c'est intéressant.
Sur les variables mysql il y a un peu d'info ici et


Sinon comme l'a déjà indiqué stealth35, pas besoin d'attendre d'utiliser PDO pour faire des requêtes préparées :
$stmt = mysqli_prepare($connexion, "SELECT `email` FROM `table` WHERE `email` =? AND `password` =?"); 

mysqli_stmt_bind_param($stmt,"ss",$_POST['email'],$_POST['password']);

mysqli_stmt_execute($stmt);

Re: SQL Procédural -> Sécurisation

par stealth35 » 27 avr. 2010, 13:24

je te suis dans ta démarche Dr@ke :wink:

sinon pour macgawel -> ils ont oublier de l'enlever parce qu'elles sont documenté (description + paramètre + exemple) :wink:

Re: SQL Procédural -> Sécurisation

par Dr@ke » 27 avr. 2010, 12:49

Tout ceci est hors-sujet :roll:

Ce n'est tout de même pas compliqué de comprendre que le sujet est la sécurisation d'une requête Mysql en mode procédural...
Le titre du sujet ainsi que son introduction sont pourtant, d'après moi, plutôt claires.

J'ai mis cette information car je la trouvais intéressante et peu documentée sur le net.

Cette information ne vient d'ailleurs pas de moi mais de mes lectures, et pour être précis dans le livre:
http://www.amazon.fr/Securite-PHP-MySQL ... 212121148/

J'en ai profité pour en faire un petit exemple plus concret.

Donc le sujet n'est pas quelle est la meilleur méthode à utiliser, mais juste:
Voici une méthode intéressante et peu connue...

Re: SQL Procédural -> Sécurisation

par macgawel » 27 avr. 2010, 11:48

Tu veux dire que tu peux utiliser des fonctions non documentées totalement obscures ? ;-)
t'es anglophobe ?
Même en étant anglophone, ça reste des fonctions non documentées :
Page PHP sur mysqli_get_client_stats()
This function is currently not documented; only its argument list is available.
#-o

Re: SQL Procédural -> Sécurisation

par stealth35 » 27 avr. 2010, 10:52

Tu veux dire que tu peux utiliser des fonctions non documentées totalement obscures ? ;-)
t'es anglophobe ?
sinon ta le droit aux requêtes multiples aussi avec mysqli_multi_query :wink:

Re: SQL Procédural -> Sécurisation

par Gofromiel » 27 avr. 2010, 10:48

Tu veux dire que tu peux utiliser des fonctions non documentées totalement obscures ? ;-)

Re: SQL Procédural -> Sécurisation

par stealth35 » 20 avr. 2010, 20:52

Complet ? Comme quoi ?
mysqli est full compatible mysql > 4.1, et a le droit a la gestion des statistiques avec mysqli_get_cache_stats(), mysqli_get_client_stats(), mysqli_get_connection_stats()

Re: SQL Procédural -> Sécurisation

par dunbar » 20 avr. 2010, 20:16

Je pense qu'il est surtout grand temps de passer à PDO à moins d'être encore dans PHP4 jusqu'au cou.
$query = $db->prepare('SELECT email FROM `table` WHERE email = ? AND `password` = ?');
var_dump($query->execute(array($email, $pasword)->fetchAll());
Adieu *real_escape_string ! Tu peux aller te reposer au côté de magic_quotes, addslash() et autres horreurs. Sans rancunes.
Salut,
Sauf erreur de ma part, cette technique est plus sûre que celle proposer par dr@ke, cependant toutes les interfaces de base de donnée n'en disposent pas et donc il faudra utiliser la méthode de dr@ke ou utilisé des procédure stockées.
De plus ta technique à un impact non négligeable sur les performance surtout quand la requête n'est utiliser qu'une seule fois.
Non seulement le code php est plus long, mais en plus la séparation de la préparation et l'exécution de celle-ci coûte plus cher au serveur.

A+ :)

Re: SQL Procédural -> Sécurisation

par AB » 20 avr. 2010, 19:39

PS: Et les exceptions ! On ne parle pas assez des exceptions.
Sans doute parce que mysql est tellement performant que ça marchait pratiquement aussi bien avant :wink:
et surtout la gestion des erreurs peut se faire autrement.

Je te rejoins pour dire que l'énorme avantage de PDO est de pouvoir changer assez facilement de type de bdd,
mais pour le reste, sans rentrer dans la polémique, pour un usage courant y'a pas de quoi sauter au plafond :)

Re: SQL Procédural -> Sécurisation

par Gofromiel » 20 avr. 2010, 19:18

Complet ? Comme quoi ?

Ce que j'aime chez PDO c'est évidement son orientation objet, mais surtout l'abstraction des toutes ces vilaines API avec lesquelles ont devait autrefois jongler. J'utilise deux types de base de données dans mon CMS (MySQL et SQLite) et je suis bien content de pas avoir à me soucier de l'API, c'est la même pour tout le monde (même s'il faut un peu de magie pour les requêtes...).

Ho, regardes, tu me fais parler de PDO ;-)

PS: Et les exceptions ! On ne parle pas assez des exceptions.

Re: SQL Procédural -> Sécurisation

par stealth35 » 20 avr. 2010, 17:47

mysqli est plus complet que PDO_MYSQL

Re: SQL Procédural -> Sécurisation

par Gofromiel » 20 avr. 2010, 17:35

Pardon :oops: ça me fait toujours de la peine quand on parle de vieux machins. PDO FTW ! ;-)

Re: SQL Procédural -> Sécurisation

par stealth35 » 20 avr. 2010, 13:26

Je pense qu'il est surtout grand temps de passer à PDO à moins d'être encore dans PHP4 jusqu'au cou.
Sans rancunes.
Oui oui , on connait PDO, merci :wink:

Mais le sujet est SQL procédural.

D'ailleurs le terme exact serait surtout les requêtes préparées au lieu de simplement parler de PDO.
ouai, en procédural on peux aussi faire des requête préparer autant avec mysql qu'avec mysqli :wink:

Re: SQL Procédural -> Sécurisation

par Dr@ke » 20 avr. 2010, 11:51

Je pense qu'il est surtout grand temps de passer à PDO à moins d'être encore dans PHP4 jusqu'au cou.
Sans rancunes.
Oui oui , on connait PDO, merci :wink:

Mais le sujet est SQL procédural.

D'ailleurs le terme exact serait surtout les requêtes préparées au lieu de simplement parler de PDO.