Sécurité site web. Injection SQL...

Fermé
OConell Messages postés 139 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 13 octobre 2010 - 19 janv. 2010 à 14:48
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 19 janv. 2010 à 16:09
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 ;)
A voir également:

4 réponses

Moyjin Messages postés 126 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 2 février 2011 10
19 janv. 2010 à 14:59
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
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
19 janv. 2010 à 15:00
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.
0
OConell Messages postés 139 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 13 octobre 2010 8
19 janv. 2010 à 15:05
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
0
OConell Messages postés 139 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 13 octobre 2010 8
19 janv. 2010 à 15:10
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() ??
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
19 janv. 2010 à 16:09
Sur des sites sur lesquels je travail, j'utilise les deux ensembles et je n'ai aucun souci.
Je seul que j'ai, c'est avec l'utilisation de fpdf qui ne gère pas les entités html (fpdf est une classe permettant de gérer des pdf).
0