Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
function bdd($string){ // Données entrantes
if(ctype_digit($string)){
// On regarde si le type de string est un nombre entier (int)
$string = intval($string);
}
else{ // Pour tous les autres types
$string = mysql_real_escape_string($string);
$string = addcslashes($string, '%_');
Si je comprends bien, je dois toujours utiliser la fonction bdd si
j'exécute une requête sql à partir d'une donnée d'un formulaire.
Mais je ne comprends pas bien l'intérêt de regarder si la donnée est un
nombre...
function html($string){ // Données sortantes
return htmlentities($string, ENT_COMPAT, 'UTF-8');
}
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
function bdd($string){ // Données entrantes
if(ctype_digit($string)){
// On regarde si le type de string est un nombre entier (int)
$string = intval($string);
}
else{ // Pour tous les autres types
$string = mysql_real_escape_string($string);
$string = addcslashes($string, '%_');
Si je comprends bien, je dois toujours utiliser la fonction bdd si
j'exécute une requête sql à partir d'une donnée d'un formulaire.
Mais je ne comprends pas bien l'intérêt de regarder si la donnée est un
nombre...
function html($string){ // Données sortantes
return htmlentities($string, ENT_COMPAT, 'UTF-8');
}
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
function bdd($string){ // Données entrantes
if(ctype_digit($string)){
// On regarde si le type de string est un nombre entier (int)
$string = intval($string);
}
else{ // Pour tous les autres types
$string = mysql_real_escape_string($string);
$string = addcslashes($string, '%_');
Si je comprends bien, je dois toujours utiliser la fonction bdd si
j'exécute une requête sql à partir d'une donnée d'un formulaire.
Mais je ne comprends pas bien l'intérêt de regarder si la donnée est un
nombre...
function html($string){ // Données sortantes
return htmlentities($string, ENT_COMPAT, 'UTF-8');
}
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
Le 02/06/2010 22:32, ricoh51 a écrit :else{ // Pour tous les autres types
$string = mysql_real_escape_string($string);
La seule chose logique.
function html($string){ // Données sortantes
return htmlentities($string, ENT_COMPAT, 'UTF-8');
}
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Surtout pas. Encore une fois, l'échapement des caractères doit être fait
en fonction du contexte (textnode, attrnode, etc)
brutalement sans aucun discernement. Sans compte qu'ici, on ne gère pas
du tout les attaques se basant sur un encodage différent.
Le 02/06/2010 22:32, ricoh51 a écrit :
else{ // Pour tous les autres types
$string = mysql_real_escape_string($string);
La seule chose logique.
function html($string){ // Données sortantes
return htmlentities($string, ENT_COMPAT, 'UTF-8');
}
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Surtout pas. Encore une fois, l'échapement des caractères doit être fait
en fonction du contexte (textnode, attrnode, etc)
brutalement sans aucun discernement. Sans compte qu'ici, on ne gère pas
du tout les attaques se basant sur un encodage différent.
Le 02/06/2010 22:32, ricoh51 a écrit :else{ // Pour tous les autres types
$string = mysql_real_escape_string($string);
La seule chose logique.
function html($string){ // Données sortantes
return htmlentities($string, ENT_COMPAT, 'UTF-8');
}
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Surtout pas. Encore une fois, l'échapement des caractères doit être fait
en fonction du contexte (textnode, attrnode, etc)
brutalement sans aucun discernement. Sans compte qu'ici, on ne gère pas
du tout les attaques se basant sur un encodage différent.
C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
Si je comprends bien, je dois toujours utiliser la fonction bdd si
j'exécute une requête sql à partir d'une donnée d'un formulaire.
Et je ne comprends pas non plus l'intérêt de addcslashes, je croyais que
c'était le boulot de mysql_escape_string.
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Pouvez-vous me dire si ces deux fonctions sont correctes?
Et y'at-il des cas qui ne sont pas gérés par ces deux fonctions?
C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
Si je comprends bien, je dois toujours utiliser la fonction bdd si
j'exécute une requête sql à partir d'une donnée d'un formulaire.
Et je ne comprends pas non plus l'intérêt de addcslashes, je croyais que
c'était le boulot de mysql_escape_string.
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Pouvez-vous me dire si ces deux fonctions sont correctes?
Et y'at-il des cas qui ne sont pas gérés par ces deux fonctions?
C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
Si je comprends bien, je dois toujours utiliser la fonction bdd si
j'exécute une requête sql à partir d'une donnée d'un formulaire.
Et je ne comprends pas non plus l'intérêt de addcslashes, je croyais que
c'était le boulot de mysql_escape_string.
Et là je dois utiliser la fonction html lorsque je veux écrire dans la
page des données qui proviennent d'un formulaire.
Pouvez-vous me dire si ces deux fonctions sont correctes?
Et y'at-il des cas qui ne sont pas gérés par ces deux fonctions?
Le 02/06/2010 23:32, ricoh51 a écrit :C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
Je ne connais pas ces différentes fonctions, mais je serai tenté de vous
donner un conseil simple : pour éviter beaucoup de problèmes, *il suffit
déjà de vérifier que l'on reçoit ce que l'on a demandé*.
Mais encore ? Si j'ai un champ "liste déroulante" par exemple et que la
valeur reçue n'est pas dans la liste ou si je mets un champ avec une
longueur maximum et que j'en reçois plus, il y a vraisemblablement un
problème...
Le 02/06/2010 23:32, ricoh51 a écrit :
C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
Je ne connais pas ces différentes fonctions, mais je serai tenté de vous
donner un conseil simple : pour éviter beaucoup de problèmes, *il suffit
déjà de vérifier que l'on reçoit ce que l'on a demandé*.
Mais encore ? Si j'ai un champ "liste déroulante" par exemple et que la
valeur reçue n'est pas dans la liste ou si je mets un champ avec une
longueur maximum et que j'en reçois plus, il y a vraisemblablement un
problème...
Le 02/06/2010 23:32, ricoh51 a écrit :C'est mon premier message sur ce groupe, je débute en php.
Sur le site du zéro, j'ai trouvé un tuto qui explique ce qu'il faut
faire pour prévenir les injections SQL et les failles XSS :
Je ne connais pas ces différentes fonctions, mais je serai tenté de vous
donner un conseil simple : pour éviter beaucoup de problèmes, *il suffit
déjà de vérifier que l'on reçoit ce que l'on a demandé*.
Mais encore ? Si j'ai un champ "liste déroulante" par exemple et que la
valeur reçue n'est pas dans la liste ou si je mets un champ avec une
longueur maximum et que j'en reçois plus, il y a vraisemblablement un
problème...
Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
Le 05/06/2010 15:12, John GALLET a écrit :Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
merci pour ce lien, je "comprends" maintenant que la sécurité c'est
compliqué :) C'est plutôt flippant je trouve...
Existe-t-il un document du même genre qui donne l'état de l'art (en
2010) pour réaliser un site web avec un espace membre? (pseudo, mot de
passe, mail de confirmation...)
eric
Le 05/06/2010 15:12, John GALLET a écrit :
Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
merci pour ce lien, je "comprends" maintenant que la sécurité c'est
compliqué :) C'est plutôt flippant je trouve...
Existe-t-il un document du même genre qui donne l'état de l'art (en
2010) pour réaliser un site web avec un espace membre? (pseudo, mot de
passe, mail de confirmation...)
eric
Le 05/06/2010 15:12, John GALLET a écrit :Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
merci pour ce lien, je "comprends" maintenant que la sécurité c'est
compliqué :) C'est plutôt flippant je trouve...
Existe-t-il un document du même genre qui donne l'état de l'art (en
2010) pour réaliser un site web avec un espace membre? (pseudo, mot de
passe, mail de confirmation...)
eric
merci pour ce lien, je "comprends" maintenant que la sécurité c'est
compliqué :) C'est plutôt flippant je trouve...
Existe-t-il un document du même genre qui donne l'état de l'art (en
2010) pour réaliser un site web avec un espace membre? (pseudo, mot de
passe, mail de confirmation...)
merci pour ce lien, je "comprends" maintenant que la sécurité c'est
compliqué :) C'est plutôt flippant je trouve...
Existe-t-il un document du même genre qui donne l'état de l'art (en
2010) pour réaliser un site web avec un espace membre? (pseudo, mot de
passe, mail de confirmation...)
merci pour ce lien, je "comprends" maintenant que la sécurité c'est
compliqué :) C'est plutôt flippant je trouve...
Existe-t-il un document du même genre qui donne l'état de l'art (en
2010) pour réaliser un site web avec un espace membre? (pseudo, mot de
passe, mail de confirmation...)
Et je ne comprends pas non plus l'intérêt de addcslashes, je croyais
que c'était le boulot de mysql_escape_string.
Bof. Ca fait partie des querelles de clocher.
C'est pas aussi simple que ça, là non plus. Si elle vient à l'origine du
monde extérieur et qu'elle a été stockée en base de données, elle ne
vient pas "directement" du formulaire, mais elle peut néanmoins être
dangereuse si on n'a pas fait le boulot avant.
Là encore, querelles de clocher. Personnellement je ne stocke pas des
bombes amorcées dans ma cave: je désamorce d'abord, puis je stocke.
D'autres font le filtrage en sortie de la base de données.
Et y'at-il des cas qui ne sont pas gérés par ces deux fonctions?
Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
Et je ne comprends pas non plus l'intérêt de addcslashes, je croyais
que c'était le boulot de mysql_escape_string.
Bof. Ca fait partie des querelles de clocher.
C'est pas aussi simple que ça, là non plus. Si elle vient à l'origine du
monde extérieur et qu'elle a été stockée en base de données, elle ne
vient pas "directement" du formulaire, mais elle peut néanmoins être
dangereuse si on n'a pas fait le boulot avant.
Là encore, querelles de clocher. Personnellement je ne stocke pas des
bombes amorcées dans ma cave: je désamorce d'abord, puis je stocke.
D'autres font le filtrage en sortie de la base de données.
Et y'at-il des cas qui ne sont pas gérés par ces deux fonctions?
Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
Et je ne comprends pas non plus l'intérêt de addcslashes, je croyais
que c'était le boulot de mysql_escape_string.
Bof. Ca fait partie des querelles de clocher.
C'est pas aussi simple que ça, là non plus. Si elle vient à l'origine du
monde extérieur et qu'elle a été stockée en base de données, elle ne
vient pas "directement" du formulaire, mais elle peut néanmoins être
dangereuse si on n'a pas fait le boulot avant.
Là encore, querelles de clocher. Personnellement je ne stocke pas des
bombes amorcées dans ma cave: je désamorce d'abord, puis je stocke.
D'autres font le filtrage en sortie de la base de données.
Et y'at-il des cas qui ne sont pas gérés par ces deux fonctions?
Un début de réponse sur un document PDF que j'ai rédigé il y quelques
années déjà, synthèse d'un thread assez long sur fr.comp.securite
http://www.saphirtech.com/securite.html
ok, alors prenons un exemple simple : j'ai un espace membre, et je veux
vérifier que le pseudo n'existe pas encore au moment de l'inscription.
J'accepte tous les caractères dans un pseudo, la seule restriction est
que sa longueur doit être comprise entre 6 et 20 caractères. Je fais :
if(isset(pseudo)){ //Vérif du pseudo
$pseudo2 = mysql_real_escape_string($pseudo);
$sql="SELECT COUNT(*) AS verif_exist FROM visiteur WHERE
pseudoVisiteur='$pseudo2'";
$reponse=mysql_query($sql);
$donnees = mysql_fetch_array($reponse);
if ($donnees['verif_exist'] != 0){ // le pseudo existe déja
$erreurPseudo='Ce pseudo existe déjà.';
}
$longueur=mb_strlen($pseudo, 'UTF-8');
if(($longueur<6)||($longueur>20)){
$erreurPseudo='La longueur du pseudo doit être comprise entre 6 et 20
caractères.';
}
}
echo '<p>Bonjour ' . htmlentities($_SESSION['pseudo']) . '</p>';
je ne comprends pas textnode, attrnode...
Ah? Peux tu développer?
ok, alors prenons un exemple simple : j'ai un espace membre, et je veux
vérifier que le pseudo n'existe pas encore au moment de l'inscription.
J'accepte tous les caractères dans un pseudo, la seule restriction est
que sa longueur doit être comprise entre 6 et 20 caractères. Je fais :
if(isset(pseudo)){ //Vérif du pseudo
$pseudo2 = mysql_real_escape_string($pseudo);
$sql="SELECT COUNT(*) AS verif_exist FROM visiteur WHERE
pseudoVisiteur='$pseudo2'";
$reponse=mysql_query($sql);
$donnees = mysql_fetch_array($reponse);
if ($donnees['verif_exist'] != 0){ // le pseudo existe déja
$erreurPseudo='Ce pseudo existe déjà.';
}
$longueur=mb_strlen($pseudo, 'UTF-8');
if(($longueur<6)||($longueur>20)){
$erreurPseudo='La longueur du pseudo doit être comprise entre 6 et 20
caractères.';
}
}
echo '<p>Bonjour ' . htmlentities($_SESSION['pseudo']) . '</p>';
je ne comprends pas textnode, attrnode...
Ah? Peux tu développer?
ok, alors prenons un exemple simple : j'ai un espace membre, et je veux
vérifier que le pseudo n'existe pas encore au moment de l'inscription.
J'accepte tous les caractères dans un pseudo, la seule restriction est
que sa longueur doit être comprise entre 6 et 20 caractères. Je fais :
if(isset(pseudo)){ //Vérif du pseudo
$pseudo2 = mysql_real_escape_string($pseudo);
$sql="SELECT COUNT(*) AS verif_exist FROM visiteur WHERE
pseudoVisiteur='$pseudo2'";
$reponse=mysql_query($sql);
$donnees = mysql_fetch_array($reponse);
if ($donnees['verif_exist'] != 0){ // le pseudo existe déja
$erreurPseudo='Ce pseudo existe déjà.';
}
$longueur=mb_strlen($pseudo, 'UTF-8');
if(($longueur<6)||($longueur>20)){
$erreurPseudo='La longueur du pseudo doit être comprise entre 6 et 20
caractères.';
}
}
echo '<p>Bonjour ' . htmlentities($_SESSION['pseudo']) . '</p>';
je ne comprends pas textnode, attrnode...
Ah? Peux tu développer?