Bonjour, je souhaiterais savoir quelle est la meilleur façon de nommé les dossiers et fichier de son site pour éviter tous probleme de hack.
ex: pour le dossier admin est-ce que je peux le nommé admin ou c'est deconseillé ?
Merci

15 réponses


Si il n'y a aucun lien vers l'admin, tu peut effectivement le nommer adminXXX avec 3 chiffres par exemple (prestashop fait ça) mais au fond ça ne change pas grand chose, il faut absolument qu'il y est un système d'identification derrière!!

moza2409
Auteur

Les liens pointant vers l'admin sont protégés par un $_SESSION, seul les membres ayant le niveau autorisé pourront avoir accée aux liens.
Mais est-ce vraiment efficace ?

Rajoute une page d'erreur 404 ou autre si on essaie d'accéder à cette page sans être connecté
ça évite que les gens aient un indice sur la position de ton administration :)

moza2409
Auteur

j'ai fait une redirection vers la page d'accueil, tu pense que ca suffit ?

si tu veux faire ce que graph propose il faut justement pas qu'il y est de redirection. il faut une erreur 404 comme s'il n'y avait pas de page a cette endroit, ainsi si quelqu'un cherche ton dossier ( supposons que ce soit admin123/ ) fait admin111/ => erreur 404 admin111/ => erreur 404 ..... admin123/ => erreur404 ....
ainsi on ne sait pas ou est ton dossier admin et on ne sais pas ou lancer l'attaque.

moza2409
Auteur

je vais paraitre un peu con mais comment créer une page 404 ? est oui je debute

moza2409
Auteur

en faite j'ai mal posé ma question, j'ai ma page admin qui est protégé par un $_SESSION donc si un utilisateur veut s'y connecter, est-ce que je peux le rediriger vers la page 404 ?
Voila ma page admin

<?php
if(isset($_SESSION'admin'])){ 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html>
<head>
    <LINK REL='StyleSheet' HREF="/CSS/style.css" TYPE="text/css">
</head>
<body>
<div id="background_conteneur">
    <div id="conteneur">
    <div id="conteneur_principal">
        <div id="conteneur_deposer_annonce">
<?php   
echo"   <div class='bouton'><a href='/admin/membres/p=1'>Les membres</a>
            <p>".($nbmembre)." membres</p>
        </div>  
        <div class='bouton'><a href='/admin/annonces/p=1'>Les annonces</a>
            <p>".($nbannonce)." annonces en ligne</p>
        </div>  
";      
?>
</div>
</div>
</div>
</body>
</html>
<?php
}else{
echo '<script language="Javascript">
<!--
document.location.replace("/404");
// -->
</script>';
}
?>

echo '<script language="Javascript">
<!--
document.location.replace("/404");
// -->
</script>';

Un header en PHP est plus propre.
header("HTTP/1.0 404 Not Found");

Bien sur le header doit être tout au début.

comme dit luffysan:
remplace

<?php
}else{
echo '<script language="Javascript">
<!--
document.location.replace("/404");
// -->
</script>';
}
?>

par

<?php
}else{
header("HTTP/1.0 404 Not Found");
}
?>

sinon plus simplement
commence le fichier par les vérification :

<?php
if(!isset($_SESSION'admin'])){ 
   header("HTTP/1.0 404 Not Found");
   exit();
}
// Tout ce qu'il y a aprés est protégé!
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html>
<head>
    <LINK REL='StyleSheet' HREF="/CSS/style.css" TYPE="text/css">
</head>
moza2409
Auteur

j'ai essayé et ca me met une erreur:
Warning: Cannot modify header information - headers already sent by (output started at /homepages/23/d428068456/htdocs/include/connect.php:18) in /homepages/23/d428068456/htdocs/page/da.php on line 2

la ligne 2 c'est :

if(!isset($_SESSION'admin'])){header("HTTP/1.0 404 Not Found"); exit();}

C'est pour ca que j'avais utilisé la method javascript

c'est que suite à des inclusion tu as déjà commencé a afficher du html
(parfois ça peut venir de simples espaces avant la balise <?php ) vérifie que tu n'affiche pas déjà quelquechose (en html, ou via un echo/print/print_r/...)

comme di maxfr il y a un du texte ou un espace en dehors des balise php, surement dans la page connect.php. pense bien a commencer le fichier directement par <?php et le mieux et de ne même par fermé la balise php a la fin comme ça t'es sur qu'il y aura pas de problème.

<?php 
/* fonctions pour ce connecter au mysql je suppose ... */
// fin du fichier sans fermé la balise php
moza2409
Auteur

Maintenent ca me met l'erreur en page index voila l'erreur:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/23/d428068456/htdocs/index.php:15) in /homepages/23/d428068456/htdocs/page/compte.php on line 279

Voila la page index.php

<?php
  session_start();
  require_once 'include/connect.php';

    $sql = "SELECT * FROM membre
    ORDER BY titre ASC
    ";
    $sqlmembre= mysql_query($sql, $cnx);
    $voirsql=mysql_fetch_assoc($sqlmembre);     
?>
<!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="en" lang="en">
<head>
    <link REL="StyleSheet" HREF="/CSS/style.css" TYPE="text/css">   
    <script type="text/javascript" src="/js/jquery.js"></script>
    <script type="text/javascript" src="/js/like.js"></script>
<script langage="javascript">
function change_col_height_max_selected_to(val){
            document.forms"form"].elements"col_height_max"].options[val].selected = true;
}
function NotSubmitValueEmpty(Obj)
{
    var NbrElem = Obj.length;
    for(x=0;x<NbrElem;x++)
    {
        var MonName = Obj.elements[x].name;
        var MaValue = Obj.elements[x].value;
        if(MonName!="" && MaValue=="")
        {
            Obj.elements[x].name="";
        }   
    }
    return true;
}
</script>
</head>
<body>
<?php
include('entete.php'); 
//selon le genre on include la page demandée
if (isset($_REQUEST'p'])){
    $p=$_REQUEST'p'];
    switch($p)
    {   
    case "compte":
    include("membre/compte.php");
    break;  
    }
}else {
}
?>  
    <div id="conteneur_bas_site2">
        <a href="/apropos">A propos</a>
        <a href="/regles">Règles de diffusion</a>
        <a href="/categorie"></a>
        <a href="/autoentrepreneur">Auto-entrepreneur</a>
        <a href="/faq" >F.A.Q</a>   
        <a href="/contact" >Contactez-nous</a>
        </div>
        <div id="conteneur_suivez_nous"></div>  
</body>
</html>

j'ai tous reverifié et ca fonctionne toujours pas

il y a quoi dans le fichier entete.php?? il y a pas des header par hasard?

moza2409
Auteur

voila le fichier entete

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <link REL='StyleSheet' HREF="CSS/style.css" TYPE="text/css">
</head>
<body>
<div id="entete">
    <div id="head">
    <div id="menu">
<?php
if(isset($_SESSION'Auth'])){  
    $pseudo=$_SESSION'Auth'];
echo" 
    <a href='/monprofil'>Mes infos</a>
";
        if(isset($_GET'as']) or isset($_GET'rec_tuto'])){
            echo"<b><a href='/sauvegardes/annonces/p=1'><font color='orange'>Mes sauvegardes</a><font></b>";    
        }else{
            echo"<a href='/sauvegardes/annonces/p=1'>Mes sauvegardes</a>";
        }
        if(isset($_GET'mes_annonces']) or isset($_GET'mes_tutos'])){
            echo"<b><a href='/moncompte/annonces/p=1'><font color='orange'>Mon compte</a><font></b>";   
        }else{
            echo"<a href='/moncompte/annonces/p=1'>Mon compte</a>";
        }
} else {
?>
        <a href="/inscription">S'inscrire</a>   
        <a href="/connexion">Se connecter</a>

<?php } ?>
        <a href="/">Acceuil</a>
        </div>
<?php
if(isset($_SESSION'Auth'])){ 
echo" <div id='menu'>
                <p><a href='/deconnexion'>Se deconnecter<a></p>
            </div>
";  
} ?>
    </div>
</div>
</body>
</html>