Sécuriser un site ?

Répondre
burnedsoul
le 09/01/2004 à 20:02
burnedsoul
Voilà, bientôt terminé mon site que je prépare. Je voudrais savoir quelles sont exactements les précautions à prendre afin de limiter la casse en matière de sécurité ?
Sachant que le site comporte des formulaires, que les membres sont loggé par pass md5 et que des arguments sont passés dans les liens ?
Merci d'avance :)
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 09/01/2004 à 21:52
LA GLOBULE
Ben controler tout ce que peut faire un utilisateur : jouer avec les paramètres des pages, controler ce qu'ils rentrent dans les formulaires, tout ca quoi...
N@b
le 09/01/2004 à 22:19
N@b
Salut ...

moi aussi j'ai fini mon site tout récement et j'ai posé la même question à d'autres personnes qui sont déjà passé par là, mais si vous voulez mon avis, la première des choses c'est de vérifier ce que peuvent modifier et traiter comme données dans ta bse de donnée (un peut comme l'a dit LA GLOBULE) puis il y'a les répertoires de configuration et de paramètres de connexion à ta base de donnée ...le mieux c'est de stocker tous les fichiers de connexion à ta base dans un seul répertoire et de sécuriser ce répertoire avec un .htacces par exemple (c'est la meilleur sécurité que tu puisse trouvé pour l'instant) ...mise à part ses démarches, il ne te reste plus qu'a te souhaiter bonne chance pour le site :) ....

PS: donnez nous l'URL de ton site une foi mis en ligne !!!
Layer
le 10/01/2004 à 07:15
Layer
conseil basic

- Pour ce qui est des connexions/requetes mysql :

methode simple pour ne pas avoir d'erreur
<?php
$cnx = @mysql_connect($host,$user,$pass);
if($cnx==FALSE){
echo "Connexion à la base impossible !<br>\n";
exit;
}

$selec_db = @mysql_select_db($base,$cnx);
if($selec_db==FALSE){
echo "Base $base inexistante !";
exit;
}
?>


quand vous faite un mysql_query() mettez toujours or die ('msg_derreur')
<?php
$req = mysql_query($sql) or die('blablabla');
?>


toujours pour le query, faite toujours un mysql_num_rows($req) et ensuite verifier si il est différent de 0
<?php
$sql = 'SELECT * FROM ma_table WHERE id = "'.$une_valeur.'"';
$req = mysql_query($sql) or die('petit problem la !');

$test_var = mysql_num_rows($req);

if($test_var==""){
//on affiche les resultats
}
else{
echo "pas de données correspondante";
}
?>



- pour ce qui est de de php propement dit:

pour les inclusions, notament les pseudo frames, toujours avoir une valeur par défaut

les formulaires : controler le type de donnée, si par exemple c'est un chiffre, préférer plutot is_numeric

petite liste :
# is_array
# is_bool
# is_callable
# is_double
# is_float
# is_int
# is_integer
# is_long
# is_null
# is_numeric
# is_object
# is_real
# is_resource
# is_scalar
# is_string

champs vide : perso moi je préfere utiliser if($my_var<>'') que if(empty($my_var))

bref vous l'aurez compris, ceci n'est qu'a titre indicatif et a completer smiley
Error 500 : internal brain error
Chad
le 10/01/2004 à 14:14
Chad
je crois que tu as fait une petite erreur dans ton code :)

tu devrais changer

<?
if($test_var==""){
//on affiche les resultats
}
else{
echo "pas de données correspondante";
}
?>

en

<?
if($test_var!=""){
//on affiche les resultats
}
else{
echo "pas de données correspondante";
}
?>

non ?
-Ch4d-
Sedilbur
le 10/01/2004 à 22:52
Sedilbur
Comme là dit LA_GLOBULE, vérifier toute les données que l'utilisateur doit/pourait envoyer via un formulaire ou l'url. Evitez que des fichiers de configuration soient accéscible pour un utilisateur, etc...
Bref, il faut prévoir le pire!
Layer
le 11/01/2004 à 08:38
Layer
oui chad :)
j'ai écrit ça un peu trop vite smiley
Error 500 : internal brain error
burnedsoul
le 11/01/2004 à 19:38
burnedsoul
Ok, désolé de répondre 3 jours après :s
Sinon, au niveau de la fameuse faille des input textarea (comme quoi il est possible de faire des requêtes dans les formulaire) ?
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 11/01/2004 à 20:19
LA GLOBULE
Ben le risque existe si tu fais des requetes sans guillemets autour de tes valeurs.

Exemple de requete avec guillemets :

SELECT * FROM champ="titi"

La, le mec a rempli le champ du formulaire avec la valeur "titi".
Tout se passe bien.

Mais imagine, que tu fasse une requete sans guillemets.
Exemple :

SELECT * FROM champ=titi

La aussi, le mec a saisi "titi" dans le formulaire.
Mais si le mec saisi "titi AND admin=1".
Ca te fera une requete du genre :

SELECT * FROM champ=titi AND admin=1

Et si le mec n'est pas trop con, et qu'il arrive à connaitre le nom de tes champs de tes tables, ben il peut par exemple se loguer comme étant un admin du site.

Tu vois un peu mieux ce que c'est l'injection dans les requetes via les formulaires ?
burnedsoul
le 12/01/2004 à 10:50
burnedsoul
Vi je vois beaucoup mieux.
Donc le fait de faire des requêtes a guillemets limite un peu plus les risques quoi.
Webmaster de Clikmag http://www.clikmag.fr
Répondre
LoadingChargement en cours