Sécurité site web. Injection SQL...
OConell
Messages postés
146
Statut
Membre
-
arthezius Messages postés 3756 Statut Membre -
arthezius Messages postés 3756 Statut Membre -
Bonjour,
Je voulais "juste" savoir si mon site était protégé des injections SQL... est autres intrusions.
Ce sera un simple site d'association sportive, mais il serait dommage qu'un petit malin efface toute la base de données.
Pour explication, j'ai fait une partie maintenance où l'association pourra mettre à jour tout le contenu du site.
Les injections pourraient donc se faire dans cette interface (qui sera plus protégée plus tard - au moins un mot de passe) :
https://www.sfr.fr/fermeture-des-pages-perso.html
ou alors, l'affichage des pages se fait en "GET", le numéro de rubrique étant donc apparent dans l'adresse du site...
https://www.sfr.fr/fermeture-des-pages-perso.html
vous avez le droit d'effacer ou rajouter des enregistrements, mais :
1- si vous virez tout, remettez en
2- ne supprimez ni la table ni la base et ne prenez pas le "contrôle de ma BD", ça vous apporterez rien à part de me faire perdre mon temps.
bref vous êtes certainement meilleur que moi ;)
Je voulais "juste" savoir si mon site était protégé des injections SQL... est autres intrusions.
Ce sera un simple site d'association sportive, mais il serait dommage qu'un petit malin efface toute la base de données.
Pour explication, j'ai fait une partie maintenance où l'association pourra mettre à jour tout le contenu du site.
Les injections pourraient donc se faire dans cette interface (qui sera plus protégée plus tard - au moins un mot de passe) :
https://www.sfr.fr/fermeture-des-pages-perso.html
ou alors, l'affichage des pages se fait en "GET", le numéro de rubrique étant donc apparent dans l'adresse du site...
https://www.sfr.fr/fermeture-des-pages-perso.html
vous avez le droit d'effacer ou rajouter des enregistrements, mais :
1- si vous virez tout, remettez en
2- ne supprimez ni la table ni la base et ne prenez pas le "contrôle de ma BD", ça vous apporterez rien à part de me faire perdre mon temps.
bref vous êtes certainement meilleur que moi ;)
A voir également:
- Sécurité site web. Injection SQL...
- Création site web - Guide
- Site de telechargement - Accueil - Outils
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Web office - Guide
- Site x - Guide
4 réponses
si tu veux pas que ca ce voit dans la barres d'adresse utilise $_post plutot que $_get
si le get correspond a un nom de page ( comme le site sans base de données que je suis entrain de faire ) ya juste a verrifier si la page existe sinon afficher une page par défaut
ensuite si l'admin est bien proteger par un mot de passe il n'y aura pas de souci enfin je pense
Petite note perso:
le site est super beau sauf la barre latéral
si le get correspond a un nom de page ( comme le site sans base de données que je suis entrain de faire ) ya juste a verrifier si la page existe sinon afficher une page par défaut
ensuite si l'admin est bien proteger par un mot de passe il n'y aura pas de souci enfin je pense
Petite note perso:
le site est super beau sauf la barre latéral
Tu devrai:
1) Protéger ta partie administration (maintenance) par un mot de passe.
Tu pourra ensuite a toutes les personnes susceptible de participer à ton site.
2) Faire des contrôles systématique de ce qui est envoyé dans les formulaires.
3) Utiliser la fonction mysql_real_escape_string() dans tes requêtes pour protéger des injections sql combiné éventuellement avec la fonction htmlentities() qui converti les caractères spéciaux en entité html.
Petit conseil supplémentaire, tu devrai utiliser CSS pour rendre ton site plus agréable à voir visuellement parlant en changeant par exemple la police et les couleurs des liens par défaut.
1) Protéger ta partie administration (maintenance) par un mot de passe.
Tu pourra ensuite a toutes les personnes susceptible de participer à ton site.
2) Faire des contrôles systématique de ce qui est envoyé dans les formulaires.
3) Utiliser la fonction mysql_real_escape_string() dans tes requêtes pour protéger des injections sql combiné éventuellement avec la fonction htmlentities() qui converti les caractères spéciaux en entité html.
Petit conseil supplémentaire, tu devrai utiliser CSS pour rendre ton site plus agréable à voir visuellement parlant en changeant par exemple la police et les couleurs des liens par défaut.
Et au niveau code :
------------- affichage des pages et donc numéro de rubrique récupéré en $_GET --------------------
<?php
if (isset($_GET['rubrique'] ) )
{
require("php/comeOn.php");
if($connexion)
{
$rubrique = $_GET['rubrique'];
affiche($rubrique,$connexion);
}
else
{
echo "Erreur de connexion à la base de données <br/>";
}
mysql_close($connexion);
}
function affiche($num_titre,$connexion)
{
$requete="SELECT `libelle_titre` , `description_titre` , `texte_contenu`
FROM `titre` AS t
WHERE t.`num_titre` =$num_titre ;";
$resultat=mysql_query($requete,$connexion);
$tuple=mysql_fetch_array($resultat);
echo "<h1>".$tuple['libelle_titre']."</h1>";
//echo "<br/><h3>Résumé :</h3>".$tuple['description_titre'];
echo "<br/><br/><h3>Contenu de la page :</h3>".$tuple['texte_contenu']."<br/><br/>";
}
?>
------------- ajout d'un nouveau titre de rubrique --------------------
...
$titre = htmlentities($_GET['titre'],ENT_QUOTES,'UTF-8') ;
$partie = $_GET['partie'] ;
...
$requete = "INSERT INTO `judoclubvayres-maintenancelibre`.`titre` (`libelle_titre`, `ordre_titre`)
VALUES ( '$titre', '$partie') " ;
------------ affichaged'une rubrique ------------------------
$rubrique = $_GET['rubrique'];
$requete="SELECT `libelle_titre` , `texte_contenu`, `ordre_titre`
FROM `titre` AS t
WHERE t.`num_titre` =".$rubrique." ;";
------------ modification d'une rubrique ----------------------
if(isset($_POST['rte1']) && isset($_POST['rte2']) && isset($_POST['partie']) && isset($_POST['rubrique']))
{
$contenu = $_POST['rte1'];
$titre = $_POST['rte2'];
$partie = $_POST['partie'];
$rubrique = $_POST['rubrique'];
$requete="UPDATE `titre` SET `libelle_titre` = '".$titre."', `texte_contenu` = '".$contenu."', `ordre_titre` = '".$partie."' WHERE `titre`.`num_titre` = $rubrique ;";
---------------------suppression d'une rubrique ---------
if(isset($_GET['rubrique']))
{
$rubrique = $_GET['rubrique'];
$requete="DELETE FROM `contenu` WHERE `num_titre`=".$rubrique.";";
$resultat=mysql_query($requete,$connexion);
$requete="DELETE FROM `titre` WHERE `num_titre`=".$rubrique.";";
$resultat=mysql_query($requete,$connexion);
header('location: ./' );
exit;
//echo " Rubrique supprimé.<br/>";
}
Voila C tout
merci
------------- affichage des pages et donc numéro de rubrique récupéré en $_GET --------------------
<?php
if (isset($_GET['rubrique'] ) )
{
require("php/comeOn.php");
if($connexion)
{
$rubrique = $_GET['rubrique'];
affiche($rubrique,$connexion);
}
else
{
echo "Erreur de connexion à la base de données <br/>";
}
mysql_close($connexion);
}
function affiche($num_titre,$connexion)
{
$requete="SELECT `libelle_titre` , `description_titre` , `texte_contenu`
FROM `titre` AS t
WHERE t.`num_titre` =$num_titre ;";
$resultat=mysql_query($requete,$connexion);
$tuple=mysql_fetch_array($resultat);
echo "<h1>".$tuple['libelle_titre']."</h1>";
//echo "<br/><h3>Résumé :</h3>".$tuple['description_titre'];
echo "<br/><br/><h3>Contenu de la page :</h3>".$tuple['texte_contenu']."<br/><br/>";
}
?>
------------- ajout d'un nouveau titre de rubrique --------------------
...
$titre = htmlentities($_GET['titre'],ENT_QUOTES,'UTF-8') ;
$partie = $_GET['partie'] ;
...
$requete = "INSERT INTO `judoclubvayres-maintenancelibre`.`titre` (`libelle_titre`, `ordre_titre`)
VALUES ( '$titre', '$partie') " ;
------------ affichaged'une rubrique ------------------------
$rubrique = $_GET['rubrique'];
$requete="SELECT `libelle_titre` , `texte_contenu`, `ordre_titre`
FROM `titre` AS t
WHERE t.`num_titre` =".$rubrique." ;";
------------ modification d'une rubrique ----------------------
if(isset($_POST['rte1']) && isset($_POST['rte2']) && isset($_POST['partie']) && isset($_POST['rubrique']))
{
$contenu = $_POST['rte1'];
$titre = $_POST['rte2'];
$partie = $_POST['partie'];
$rubrique = $_POST['rubrique'];
$requete="UPDATE `titre` SET `libelle_titre` = '".$titre."', `texte_contenu` = '".$contenu."', `ordre_titre` = '".$partie."' WHERE `titre`.`num_titre` = $rubrique ;";
---------------------suppression d'une rubrique ---------
if(isset($_GET['rubrique']))
{
$rubrique = $_GET['rubrique'];
$requete="DELETE FROM `contenu` WHERE `num_titre`=".$rubrique.";";
$resultat=mysql_query($requete,$connexion);
$requete="DELETE FROM `titre` WHERE `num_titre`=".$rubrique.";";
$resultat=mysql_query($requete,$connexion);
header('location: ./' );
exit;
//echo " Rubrique supprimé.<br/>";
}
Voila C tout
merci
Merci pour vos 2 réponses (et tes compliments Moyjin ^^ )
Pour le design, il est fait en CSS, mais je m'en occuperais plus après. La je fait la sécurité... et vu que j'y connais rien en sécu ça me prendras plus de temps.
D'ailleurs sur la sécu, si j'ai posté ça , c'est à cause entre autre à cause de htmlentities. ça ne gêne pas de l'utiliser avec mysql_real_escape_string() ??
Pour le design, il est fait en CSS, mais je m'en occuperais plus après. La je fait la sécurité... et vu que j'y connais rien en sécu ça me prendras plus de temps.
D'ailleurs sur la sécu, si j'ai posté ça , c'est à cause entre autre à cause de htmlentities. ça ne gêne pas de l'utiliser avec mysql_real_escape_string() ??