Sécurité php/mysql
katarina999
Messages postés
75
Statut
Membre
-
JooS Messages postés 2705 Statut Membre -
JooS Messages postés 2705 Statut Membre -
Bonsoir,
J'ai réalisé un petit script pour comprendre les requêtes dynamiques.
Pourriez-vous me dire comment faire pour le sécuriser ? Si on change le id dans l'url, et qu'on en tape un qui n'existe pas, ma page s'affiche quand même.
Voici mon code :
<?php
include 'identification.php';
$user = $_GET['user'];
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
if ($user == ''){
$requete = "SELECT * FROM test_utilisateurs;";
$resultats = mysql_query($requete,$connexion) or die("Une erreur est survenue : " . mysql_error());
while ($ligne = mysql_fetch_array($resultats))
{
echo '
<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p><a href="'.$_SERVER['PHP_SELF'].'?user='.$ligne["no_id"].'">Accèder à la fiche détaillée</a></p><hr />
';
}
}
else if($user == $_GET['user']){
$requete = "SELECT * FROM test_utilisateurs WHERE no_id = '".$user."'";
$resultats = mysql_query($requete,$connexion) or die("Une erreur est survenue : " . mysql_error());
#liste les infos pour un utilisateur
while ($ligne = mysql_fetch_array($resultats))
{
echo '
<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p>Courriel : '.$ligne["courriel"].'</p>
<p>Mot de passe : '.$ligne["mdp"].'</p>
';
}
echo'<p><a href="afficher.php">Retour</a><p>';
}
mysql_close($connexion);
?>
Merci de bien vouloir m'aider.
Kat.
J'ai réalisé un petit script pour comprendre les requêtes dynamiques.
Pourriez-vous me dire comment faire pour le sécuriser ? Si on change le id dans l'url, et qu'on en tape un qui n'existe pas, ma page s'affiche quand même.
Voici mon code :
<?php
include 'identification.php';
$user = $_GET['user'];
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
if ($user == ''){
$requete = "SELECT * FROM test_utilisateurs;";
$resultats = mysql_query($requete,$connexion) or die("Une erreur est survenue : " . mysql_error());
while ($ligne = mysql_fetch_array($resultats))
{
echo '
<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p><a href="'.$_SERVER['PHP_SELF'].'?user='.$ligne["no_id"].'">Accèder à la fiche détaillée</a></p><hr />
';
}
}
else if($user == $_GET['user']){
$requete = "SELECT * FROM test_utilisateurs WHERE no_id = '".$user."'";
$resultats = mysql_query($requete,$connexion) or die("Une erreur est survenue : " . mysql_error());
#liste les infos pour un utilisateur
while ($ligne = mysql_fetch_array($resultats))
{
echo '
<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p>Courriel : '.$ligne["courriel"].'</p>
<p>Mot de passe : '.$ligne["mdp"].'</p>
';
}
echo'<p><a href="afficher.php">Retour</a><p>';
}
mysql_close($connexion);
?>
Merci de bien vouloir m'aider.
Kat.
A voir également:
- Sécurité php/mysql
- Question de sécurité - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Mode securite - Guide
- Easy php - Télécharger - Divers Web & Internet
- Clé de sécurité windows 10 gratuit - Guide
5 réponses
Bonsoir,
Vérifies d'abord que l'id est bien présente dans la table test_utilisateurs et ensuite avec une simple condition tu peux afficher un message du style "Cette page n'existe pas...".
D'autres part, cette requête comporte une erreur de syntaxe :
Vérifies d'abord que l'id est bien présente dans la table test_utilisateurs et ensuite avec une simple condition tu peux afficher un message du style "Cette page n'existe pas...".
D'autres part, cette requête comporte une erreur de syntaxe :
$requete = "SELECT * FROM test_utilisateurs;";
Et si je dis compte tous les id et que je fais une condition qui dit que si l'id est supérieur au total des id => message d'erreur.
Est-ce une bonne technique ?
Est-ce une bonne technique ?
Par exemple (à améliorer) :
<?php
include 'identification.php';
$user = $_GET['user'];
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
if($user == '') {
$requete = "SELECT * FROM test_utilisateurs";
$resultats = mysql_query($requete,$connexion) or die("Une erreur est survenue : " . mysql_error());
while ($ligne = mysql_fetch_array($resultats)) {
echo '<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p><a href="'.$_SERVER['PHP_SELF'].'?user='.$ligne["no_id"].'">Accéder à la fiche détaillée</a></p><hr />';
}
} else {
$requete = "SELECT no_id FROM test_utilisateurs WHERE no_id='".$user."'";
if(mysql_num_rows($requete) != 0) {
$req = "SELECT * FROM test_utilisateurs WHERE no_id='".$user."'";
$resultats = mysql_query($req,$connexion) or die("Une erreur est survenue : " . mysql_error());
#liste les infos pour un utilisateur
while ($ligne = mysql_fetch_array($resultats)) {
echo '<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p>Courriel : '.$ligne["courriel"].'</p>
<p>Mot de passe : '.$ligne["mdp"].'</p>';
}
echo'<p><a href="afficher.php">Retour</a><p>';
mysql_free_result($resultats);
} else {
echo "<p>Aucun résultat correspondant à votre demande.</p>\n";
}
mysql_free_result($requete);
}
mysql_close($connexion);
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le script devrait afficher une erreur dans le cas ou $_GET['user'] n'existerait pas ...Undefined ..., enfin, je pense ...
donc...
Le include, c'est pourquoi??
donc...
<?php
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
if(!isset($_GET['user']) OR empty($_GET['user'])) {
$requete = "SELECT * FROM test_utilisateurs";
$resultats = mysql_query($requete,$connexion) or die("Une erreur est survenue : " . mysql_error());
while ($ligne = mysql_fetch_array($resultats)) {
echo '<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p><a href="'.$_SERVER['PHP_SELF'].'?user='.$ligne["no_id"].'">Accéder à la fiche détaillée</a></p><hr />';
}
} else {
$user = htmlentities($_GET['user'],ENT_QUOTES);
$requete = "SELECT no_id FROM test_utilisateurs WHERE no_id='".$user."'";
if(mysql_num_rows($requete) != 0) {
$req = "SELECT * FROM test_utilisateurs WHERE no_id='".$user."'";
$resultats = mysql_query($req,$connexion) or die("Une erreur est survenue : " . mysql_error());
#liste les infos pour un utilisateur
while ($ligne = mysql_fetch_array($resultats)) {
echo '<p>Nom : '.$ligne["nom"].'</p>
<p>Prénom : '.$ligne["prenom"].'</p>
<p>Courriel : '.$ligne["courriel"].'</p>
<p>Mot de passe : '.$ligne["mdp"].'</p>';
}
echo'<p><a href="afficher.php">Retour</a><p>';
mysql_free_result($resultats);
} else {
echo "<p>Aucun résultat correspondant à votre demande.</p>\n";
}
mysql_free_result($requete);
}
mysql_close($connexion);
?>
Le include, c'est pourquoi??