A voir également:
- [mysql][faille securite]
- Mode securite - Guide
- Mysql community server - Télécharger - Bases de données
- Désactiver sécurité windows - Guide
- Bouton sécurité windows - Forum Windows
- Clé de sécurité google - Accueil - Guide confidentialité
5 réponses
Bon j'éclaire les choses :
COncernant : elghafoud, ce n'est pas l'abcense de mot de passes qui va permettre les injections SQL.
Oui, il faut mettre un mot de passe à ton serveur SQL car sinon n'importe qui peux se connecter à ton serveur pour changer le contenu des tables et etc. (A part si tu as une restriction d'IP).
Ensuite, pour ne plus être vulnérable à l'SQL injection, il y a juste à activer les magic_quotes dans ton fichier PHP.ini, de même pour plus de sécurité, (même si cela n'a rien a voir avec l'SQL injection) active le Safe_mod.
Voilà :D
COncernant : elghafoud, ce n'est pas l'abcense de mot de passes qui va permettre les injections SQL.
Oui, il faut mettre un mot de passe à ton serveur SQL car sinon n'importe qui peux se connecter à ton serveur pour changer le contenu des tables et etc. (A part si tu as une restriction d'IP).
Ensuite, pour ne plus être vulnérable à l'SQL injection, il y a juste à activer les magic_quotes dans ton fichier PHP.ini, de même pour plus de sécurité, (même si cela n'a rien a voir avec l'SQL injection) active le Safe_mod.
Voilà :D
elghafoud
Messages postés
121
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
29 avril 2013
18
30 juin 2006 à 13:19
30 juin 2006 à 13:19
tout simplement parce que roor n'a pas de mot de passe !!! et c'est tres tres tres grave! essaye de mettre un !
sinon essaye aussi de creer des utilisateur avec des droit limite!
courage
sinon essaye aussi de creer des utilisateur avec des droit limite!
courage
oh, merci
mais le truc c'est que les utilisateurs doivent pouvoir modifier la base, mais juste leur ligne.
alors, même si je leur donne un mot de passe, comment faire pour qu'ils ne touchent pas aux autres lignes ?
mais le truc c'est que les utilisateurs doivent pouvoir modifier la base, mais juste leur ligne.
alors, même si je leur donne un mot de passe, comment faire pour qu'ils ne touchent pas aux autres lignes ?
lalala tu dis n'importe quoi il faut pas mettre de mot de passe pour que se soit BEAUCOUP MIEUX SECURISE je l'ai fait plein de fois et je peux te dire que je n'ai eu aucun probleme au contraire: on m'avait dis qu'il fallais absolument un mot de passe et du jour au lendemain, mon site a disparu je ne sais comment et après je n'ai pas mis de mot de passe et tout allais mieux, j'avais perdu toutes mes données et j'ai remis 6 mois a tout bien refaire... Donc un conseil: ne met jamais de mot de passe a ton serveur MySQL
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
13 mai 2009 à 10:41
Voici le code corrigé (enfin les principals failles)
<?php
session_start();
?>
<HTML>
<HEAD><TITLE>Base de données des doctorants </TITLE>
</HEAD>
<H3 ALIGN=CENTER>
FIN D’ACTIVITE DES DOCTORANTS <BR>
Questionnaire 2006<BR>
-
PROMOTION 2005</H3>
<?php
//Fonction de securisation des variable pour les utiliser dans une requete utilisation :
//Sur une variable de type str $var = Secure_SQL($var, 2);
//Sur une variable de type int $var = Secure_SQL($var, 1); retourne 0 en cas derreur
function Secure_SQL($var, $id) {
if $id == 1 {
if (is_int(23)) {
return $var;
}
else {
return 0;
}
}
else {
if(get_magic_quotes_gpc()) {
return addslashes($var);
}
}
}
//Fonction de securisation des variable contre les failles xss
function Secure_Xss($var) {
return strip_tags(htmlentities ($var));
}
// récupération du nom saisi dans le formulaire , on le met en maj comme dans la base
$nom=$_REQUEST["nom"];
$prenom=$_REQUEST["prenom"];
$nom=strtoupper($nom);
// récupération du prenom saisi dans le formulaire,on le met en minuscule, on met la 1ere lettre en maj comme dans la base
$prenom=strtolower($prenom);
$prenom=ucfirst($prenom);
// si les champs sont vides on refuse
if ($nom==""&&$prenom=="")
{
echo "<TR><TD COLSPAN=5>Vous devez saisir votre nom et prénom : acces refusé</TD></TR>";
}
else
{
// création d'une connexion à la base de données
mysql_connect("localhost","root","");
// sélection de la base de données formation
mysql_select_db("doctorants");
$nom = Secure_SQL($nom,2)
$prenom = Secure_SQL($prenom,2)
// création de la requête qui va nous permettre de récupérer les infos sur le doctorant
$requete = "SELECT * FROM suivi where identite = '$nom $prenom' ";
// fait le lien entre identite et identifiant
// execution de la requête
$resultats = mysql_query($requete)or die (" probleme sql");
// parcours des résulats : tant qu'il y a des resultats : afficher
while($ligne = mysql_fetch_array($resultats)) {
// récupération des champs
$identite= Secure_Xss($ligne["identite"]);
$pays = Secure_Xss($ligne["pays"]);
$genre = Secure_Xss($ligne["genre"]);
$annee = Secure_Xss($ligne["annee"]);
$equipe = Secure_Xss($ligne["equipe"]);
// affichage du tableau
// si le nom saisi dans le formulaire est le même que celui récupéré de la base de données afficher liste
// affichage d'une ligne du tableau
// affichage du nom
echo "Nom et prénom du doctorant: $identite<br>";
// affichage du pays
echo "Pays : $pays<br>";
// affichage du sexe
echo "Sexe : $genre<br>";
// affichage annee naissance
echo "Année de naissance : $annee<br>";
// affichage de l'equipe
echo "Equipe/projet de recherche : $equipe<br>";
$_SESSION["identite"]=$identite;
$_SESSION["pays"]=$pays;
$_SESSION["genre"]=$genre;
$_SESSION["annee"]=$annee;
$_SESSION["equipe"]=$equipe;
include 'questionnaire.php';
}
// si le login saisi dans le formulaire n'est pas dans la base
if (mysql_num_rows($resultats)==0)
{
echo "<TR><TD COLSPAN=5>Erreur de login : acces refusé</TD></TR>";
}
}
?>
</table>
</HTML>
13 mai 2009 à 10:46
//création d'une connexion à la base de données
mysql_connect("localhost","root","");
// sélection de la base de données news
mysql_select_db("doctorants");
// création de la requête qui va nous permettre de maj
$requete = "UPDATE suivi SET datedebcontrat='Secure_SQL($datedebutcontrat,2)',datefincontrat='Secure_SQL($datefincontrat,2)',sujet='Secure_SQL($sujet,2)' where identite = 'Secure_SQL($identite,2)' ";
mysql_query($requete) or die("pb sql");
Donc maintenant, A CHAQUE FOIS QUE TU UTILISE UNE VARIABLE DANS UNE REQUETE, IL FAUT LA VERIFIER/PROTEGER...
Un autre principe de base en secu informatique : Ne jamai faire confiance aux données transmisent par l'utilisateur
13 mai 2009 à 10:50
function Secure_SQL($var, $id) {
if ($id == 1) {
if (is_numeric($var) && $var >=0) {
return $var;
}
else {
return 0;
}
}
else {
if(get_magic_quotes_gpc()) {
return addslashes($var);
}
}
}
Encors désolé pour l'enchainement de post
13 mai 2009 à 11:00
Bonjour à Tous
Voici le code corrigé (enfin les principals failles)
<?php
session_start();
?>
<HTML>
<HEAD><TITLE>Base de données des doctorants </TITLE>
</HEAD>
<H3 ALIGN=CENTER>
FIN D’ACTIVITE DES DOCTORANTS <BR>
Questionnaire 2006<BR>
-
PROMOTION 2005</H3>
<?php
//Fonction de securisation des variable pour les utiliser dans une requete utilisation :
//Sur une variable de type str $var = Secure_SQL($var, 2);
//Sur une variable de type int $var = Secure_SQL($var, 1); retourne 0 en cas derreur
function Secure_SQL($var, $id) {
if ($id == 1) {
if (is_numeric($var) && $var >=0) {
return $var;
}
else {
return 0;
}
}
else {
if(!get_magic_quotes_gpc()) {
return addslashes($var);
}
}
}
//Fonction de securisation des variable contre les failles xss
function Secure_Xss($var) {
return strip_tags(htmlentities ($var));
}
// récupération du nom saisi dans le formulaire , on le met en maj comme dans la base
$nom=$_REQUEST["nom"];
$prenom=$_REQUEST["prenom"];
$nom=strtoupper($nom);
// récupération du prenom saisi dans le formulaire,on le met en minuscule, on met la 1ere lettre en maj comme dans la base
$prenom=strtolower($prenom);
$prenom=ucfirst($prenom);
// si les champs sont vides on refuse
if ($nom==""&&$prenom=="")
{
echo "<TR><TD COLSPAN=5>Vous devez saisir votre nom et prénom : acces refusé</TD></TR>";
}
else
{
// création d'une connexion à la base de données
mysql_connect("localhost","root","");
// sélection de la base de données formation
mysql_select_db("doctorants");
$nom = Secure_SQL($nom,2)
$prenom = Secure_SQL($prenom,2)
// création de la requête qui va nous permettre de récupérer les infos sur le doctorant
$requete = "SELECT * FROM suivi where identite = '$nom $prenom' ";
// fait le lien entre identite et identifiant
// execution de la requête
$resultats = mysql_query($requete)or die (" probleme sql");
// parcours des résulats : tant qu'il y a des resultats : afficher
while($ligne = mysql_fetch_array($resultats)) {
// récupération des champs
$identite= Secure_Xss($ligne["identite"]);
$pays = Secure_Xss($ligne["pays"]);
$genre = Secure_Xss($ligne["genre"]);
$annee = Secure_Xss($ligne["annee"]);
$equipe = Secure_Xss($ligne["equipe"]);
// affichage du tableau
// si le nom saisi dans le formulaire est le même que celui récupéré de la base de données afficher liste
// affichage d'une ligne du tableau
// affichage du nom
echo "Nom et prénom du doctorant: $identite<br>";
// affichage du pays
echo "Pays : $pays<br>";
// affichage du sexe
echo "Sexe : $genre<br>";
// affichage annee naissance
echo "Année de naissance : $annee<br>";
// affichage de l'equipe
echo "Equipe/projet de recherche : $equipe<br>";
$_SESSION["identite"]=$identite;
$_SESSION["pays"]=$pays;
$_SESSION["genre"]=$genre;
$_SESSION["annee"]=$annee;
$_SESSION["equipe"]=$equipe;
include 'questionnaire.php';
}
// si le login saisi dans le formulaire n'est pas dans la base
if (mysql_num_rows($resultats)==0)
{
echo "<TR><TD COLSPAN=5>Erreur de login : acces refusé</TD></TR>";
}
}
?>
</table>
</HTML>
------------------------------
Pour ton update tu peu faire :
------------------------------------
//création d'une connexion à la base de données
mysql_connect("localhost","root","");
// sélection de la base de données news
mysql_select_db("doctorants");
// création de la requête qui va nous permettre de maj
$requete = "UPDATE suivi SET datedebcontrat='Secure_SQL($datedebutcontrat,2)',datefincontrat='Secure_SQL($datefincontrat,2)',sujet='Secure_SQL($sujet,2)' where identite = 'Secure_SQL($identite,2)' ";
mysql_query($requete) or die("pb sql");
Donc maintenant, A CHAQUE FOIS QUE TU UTILISE UNE VARIABLE DANS UNE REQUETE, IL FAUT LA VERIFIER/PROTEGER...
Un autre principe de base en secu informatique : Ne jamai faire confiance aux données transmisent par l'utilisateur
Encors désolé pour l'enchainement de post si un modo pouvais virer mes précedent post ça serai sympa :)