sécurisé mon site

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 : sécurisé mon site

Re: sécurisé mon site

par Dr@ke » 27 oct. 2009, 22:18

C'est sur :wink:

Re: sécurisé mon site

par Yosh » 27 oct. 2009, 22:16

C'est surtout moins galère à gérer puisque PDO fait tout pour toi.

Re: sécurisé mon site

par Dr@ke » 27 oct. 2009, 21:37

Oui tu as raison, surtout que c'est encore beaucoup plus simple en PDO :wink:
$id_rem = (isset($id_rem)) ? trim($id_rem) : null;
$id = (isset($id)) ? trim($id) : null;

if(ctype_alnum($id) && ctype_alnum($id_rem)) {
try {  
// remplace localhost, myDatabase, user et pass par tes paramétres de connexion Sql
$conection = new PDO('mysql:host=localhost;dbname=myDatabase', 'user', 'pass');
$conection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$requete = $conection->prepare("INSERT INTO `ref` (`id_m`, `id_rem`) VALUES (?, ?)");

$requete->execute(array($id, $id_rem));
} catch (Exception $e) {  
echo "Erreur: " . $e->getMessage();  
}  
}

Re: sécurisé mon site

par Dr@ke » 27 oct. 2009, 17:36

Simplement car je n'ai jamais encore utilisé ni testé les requête préparées via PDO.

Mais si tu veux en parler, n'hésites pas :wink:

Re: sécurisé mon site

par Yosh » 27 oct. 2009, 17:19

Et pourquoi ne pas utiliser les requête préparées via PDO?

Re: sécurisé mon site

par Dr@ke » 27 oct. 2009, 14:15

Moi pour cela je décomposerais : (c'est plus lisible)
//on passe au condition : je considère que id et id_mem sont des integers
if (is_integer($id) && is_integer($id_mem))
{
  mysql_query($requete);
}
Ok pour cela, mais dans ce cas: inutile d'utiliser mysql_real_escape_string():
(et quitte a sortir les variables de cette manière -> autant faire un test isset)
$id = mysql_real_escape_string($id); //histoire de ne pas l'oublier
$id_rem = mysql_real_escape_string($id_rem);
Et inutile, aussi, d'entourer les variables avec des guillemets:
VALUES('$id','$id_rem')"; //ta requete ainsi est plus lisible
Et cela sera encore beaucoup plus lisible: (Ce que j'expliquais plus tôt dans ce Topic)...

Sauf que ici, rien ne prouve que $id et $id_rem sont des Int, $id peut très bien être simplement le pseudo...
Donc, ceci est plus logique et de toute manière pas moins sécurisé:
(ctype_alnum ne répondra true que si la variable est une chaine...)
$id_rem = (isset($id_rem)) ? mysql_real_escape_string($id_rem) : null;
$id = (isset($id)) ? mysql_real_escape_string($id) : null;

$sql = 'INSERT INTO `ref`(id_m, id_rem) VALUES(' . "'" . $id . "', '" . $id_rem . "')";

if(ctype_alnum($id) && ctype_alnum($id_rem)) {
   mysql_query($sql);
}
et:
$ref_code = (isset($ref_code)) ? mysql_real_escape_string($ref_code) : null;
$id = (isset($id)) ? mysql_real_escape_string($id) : null;

$sql = 'UPDATE `membres` SET ref_code = ' . "'" . $ref_code . "'" . ' WHERE id_membres = ' . "'" . $id . "'";

if(ctype_alnum($ref_code) && ctype_alnum($id)) {
   mysql_query($sql);
}
L'important surtout, je croies, pour l'auteur du Topic est de comprendre pourquoi utiliser telle ou telle fonction et/ou telle ou telle syntaxe...

Ps: on pourrait chipoter en enlevant mysql_real_escape_string() quand on utilise ctype_alnum() mais par habitude je n'utilise pas mysql_real_escape_string() seulement quand la variable contient un entier...
C'est plus simple et on évite certains bugs possibles...

Ps2, au sujet de mysql_real_escape_string(): (pour info)
La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.

Re: sécurisé mon site

par FuZZyLine » 27 oct. 2009, 13:20

Salut,

Rien ne t'empèche, en plus, de regarder le schéma de la table et faire une comparainson par champ/type.
Voici un lien qui peut t'interresser: http://sqlpro.developpez.com/cours/sqla ... partie2#L9

@+ ;)

Re: sécurisé mon site

par Aureusms » 27 oct. 2009, 12:36

Moi pour cela je décomposerais : (c'est plus lisible)
<?php
$id = mysql_real_escape_string($id); //histoire de ne pas l'oublier
$id_rem = mysql_real_escape_string($id_rem);
$requete = "INSERT INTO ref (id_m,id_rem) VALUES('$id','$id_rem')"; //ta requete ainsi est plus lisible

//on passe au condition : je considère que id et id_mem sont des integers
if (is_integer($id) && is_integer($id_mem))
{
  mysql_query($requete);
}
else
{
  echo 'problème : message d\'erreur, ou autres gestions des erreurs';
}
?>

Re: sécurisé mon site

par Dr@ke » 26 oct. 2009, 23:08

INSERT aussi oui !
$sql = mysql_query('INSERT INTO `ref`(id_m, id_rem) VALUES(' . "'" . mysql_real_escape_string($id) . "', '" . mysql_real_escape_string($id_rem) . "')");

mysql_query('UPDATE `membres` SET ref_code = ' . "'" . mysql_real_escape_string($ref_code) . "'" . ' WHERE id_membres = ' . "'" . mysql_real_escape_string($id) . "'");

Re: sécurisé mon site

par keviin1988 » 26 oct. 2009, 22:36

désoler la première c'est un INSERT, je suppose que j'utilise pas mysql_real_escape_string avec ?
mais pour update je trouve pas comment le faire surtout avec les simple guillemet :cry:
merci

Re: sécurisé mon site

par keviin1988 » 26 oct. 2009, 22:32

Olalala je pensé que c'été plus facile que sa de sécurisé un site ...
donc pour une requête comme sa
$sql=mysql_query("INSERT INTO ref (id_m,id_rem) VALUES(mysql_real_escape_string($id),mysql_real_escape_string($id_rem))")
et si il y avais un WHERE , comme cette requête ?
mysql_query("UPDATE membres SET ref_code = '$ref_code' WHERE id_membres='$id';")
aider moi svp j'en peut plus et j'avance comme une fourmille sur mon site :cry:
merci beaucoup

Re: sécurisé mon site

par Dr@ke » 26 oct. 2009, 21:35

dans une requête UPDATE , j'utilise mysql_real_escape_string ?
merci beaucoup.
Oui :wink:

Re: sécurisé mon site

par keviin1988 » 26 oct. 2009, 20:10

j'ai encore une question :oops:
dans une requête UPDATE , j'utilise mysql_real_escape_string ?
merci beaucoup.

Re: sécurisé mon site

par keviin1988 » 26 oct. 2009, 17:52

Merci beaucoup pour votre aide c'est vraiment très détaillé et complet.Oui Oui je suis un apprenti donc tout me sert :D
Sauf que je pensé que la $_SESSION c'est coté serveur , j'ai même pas utilisé les cookies pour que se soit plus sure .

Re: sécurisé mon site

par Dr@ke » 26 oct. 2009, 15:34

$integer = $_tableau['nombre'];
ctype_digit($integer); // -> si $integer contient un entier positif -> true
$integer = 42; -> est juste un cas particulier pour spécifier qu'il vérifie que les variables de type String et non de Type Int.
Et donc pour différencier la fonction ctype_digit() de la fonction is_int().
(Enfin je pense...)

is_int(): http://php.net/manual/fr/function.is-int.php