htaccess ?... ca sert vraiment ?

Pochtroi

Membre actif
J'ai codé une page en php pour en limiter l'accès (il faut un mot de passe que je suis le seul à connaitre).
En fait, il est écrit dans le code source mais en chargeant la page et en demandant le code source, vu que mon mot de passe est dans des instructions php, je n'arrive pas à le voir. Moi, je me dis que c'est sécurisé, mais peut être que c'est un jeu d'enfant de le retrouver pour un hacker ...:mouais:
Sachant que je suis sur free, et que d'après le Site du Zéro, on ne peut pas crypter les mots de passes, est-ce bien nécessaire de m'emmerder avec un htaccess ?

en gros mon code actuel ressemble à ca:

page d'accueil:
Bloc de code:
 <form method="post" action="Administration/admin.php">
  <h4><label for="password">Mot de Passe :</label>
  <input type="password" name="password" id="password" /></h4>
  <h6><input type="submit" value="Entrer" /></h6>
 </form>

page protégée:
Bloc de code:
 <?php
if (isset($_POST['password']))
{
  $passe=$_POST['password'];
}
else
{
  $passe="";
}

if ($passe==topsecret)
{ ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body>

// Charabia Top Secret

</body>
</html>

<?php
}
else
{ ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body>

<p>Mot de passe erronn&eacute;</p>
<a href="index.php"><input type="button" value="Retour &agrave; l'accueil" /></a>

</body>
</html>
<?php } ?>
 
Je ne m'y connais pas trop en php, mais effectivement dans ton cas tu peux tout faire en php. Une solution plus répandue est de mettre un fichier config.php dans un dossier à part contenant des CONSTANTES (pour éviter la modification des données) avec les données sensibles (mot de passe, accès bdd, etc). Dans ce dossier à part, tu mets un fichier .htaccess pour interdire l'accès via le web, et dans ton programme php, tu fais un include du fichier config.php.

À part ça ton programme ne me semble pas trop juste, même s'il doit fonctionner. Il y a des erreurs au niveau html et dans la logique aussi, tu te compliques la tâche inutilement je crois. J'ai fait un code équivalent (avec la constante pour le topsecret), il y a sûrement des erreurs mais je crois c'est plus clair ainsi :

Bloc de code:
<?php header('Content-Type: text/html; charset=ISO-8859-1');?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
if (isset($_POST['password']))
{
if ($_POST['password']==__TOPSECRET__)
{ ?>


<p>// Charabia Top Secret</p>

<?php
}
else
{ ?>


<p>Mot de passe erronn&eacute;</p>
<p><a href="index.php">Retour &agrave; l'accueil</a></p>

<?php } 
}?>
</body>
</html>
Les pros du php te renseigneront mieux que moi... ;-)

P.S. : j'ai pas mis l'include du fichier config.php en début de programme tu le feras bien tout seul
 
Le htaccess c'est un moyen relativement simple de sécuriser un répertoire par exemple, c'est apache qui gère tout et tu n'as plus à t'en préoccuper après.
Gérer ça dans le php, c'est tout à fait faisable bien sûr, c'est du code exécuté côté serveur, donc un client ne peut pas le consulter et donc pas trouver ton mot de passe. La solution 100% php est plus souple, mieux intégrée au site. Mais elle demande aussi d'être plus vigilant, pour une page aussi simple que la tienne ça pose pas vraiment de problème, mais pour un site web plus complexe, tu augmentes le risque de laisser une faille quelque part. Bref, comme souvent, tu te retrouves devant deux solutions qui donnent le même résultat, et il n'y en a pas vraiment une meilleur que l'autre, donc à toi de t'adapter en fonction du contexte.
 
Suffit de demander à ton client ftp d'afficher les fichiers invisibles. ;)

Perso quand je dois modifier un fichier .htaccess sur le serveur je le renomme en htaccess.txt, je le copie sur mon mac, je fais les modifs, je le recopie sur le serveur, je le renomme (ouf!)*.

Et la solution que je t'ai donné est la plus sécure (le fichier config.php dans un dossier protégé), suffit d'y mettre un fichier .htaccess avec comme contenu :

Bloc de code:
Deny from all
Et personne ne pourra aller dans le dossier où est enregistré ta config avec les mots de passe. :p




*maintenant avec cyberduck et textmate je peux les modifier en direct sans toutes ces manipulations ;)
 
En effet, ça marche très bien mais qqch m'échappe. Pourquoi quand il fait le include, il ne demande aucun mot de passe ?
Précise ce que t'as fait exactement, dit comme ça ça ne veut pas dire grand chose.

Si qqun fait un include de mon fichier config.php sur une page à lui, il accèdera à mes codes ?

non, c'est la parge interprétée qui est inclue. Personne ne peut accéder à tes sources sauf en ayant accès physiquement à tes fichiers. ;)
 
Précise ce que t'as fait exactement, dit comme ça ça ne veut pas dire grand chose.

J'ai fait comme gloup gloup la citrouille m'a dit (merci au fait :zen: ) : j'ai fais un include dans mes pages d'un fichier protégé par .htaccess où sont inscrits mes pseudo et mot de passe de BDD. Et ça marche du fire of God !

non, c'est la parge interprétée qui est inclue. Personne ne peut accéder à tes sources sauf en ayant accès physiquement à tes fichiers. ;)

D'accord je vois. Si j'ai bien compris, personne ne peut jamais accéder à mon code php... même un bon hacker?...
 
J'ai fait comme gloup gloup la citrouille m'a dit (merci au fait :zen: ) : j'ai fais un include dans mes pages d'un fichier protégé par .htaccess où sont inscrits mes pseudo et mot de passe de BDD. Et ça marche du fire of God !
Bon, si ça marche du feu de dieu, qu'est-ce qui va pas alors ?



D'accord je vois. Si j'ai bien compris, personne ne peut jamais accéder à mon code php... même un bon hacker?...
En aucun cas, et du coup je vois pas bien l'intérêt de la solution de gloupgloup...
à partir du moment où ton fichier est bien nommé .php il est automatiquement interprété par apache lorsqu'on y accède par une adresse web. Donc le code php ne peut pas apparaître. Le seul moyen d'accéder au code est d'accéder aux fichiers directement depuis la machine sur laquelle ils sont stockés, par ftp par exemple.
Le seul cas à risque c'est si tu stockais tes mots de passe dans un fichier dont le nom ne serait pas en .php, apache ne les interpréterait pas sauf dans le cas où ils sont utilisés dans un include. Là ce serait dangeux et ce serait utile de les stocker dans un répertoire protégé (ou de configurer apache pour les interpréter quand même).