Gros pb de sécurité sur mon site avec l'utilisation de session_start();

Messages postés
1
Date d'inscription
jeudi 19 décembre 2019
Statut
Membre
Dernière intervention
19 décembre 2019
-
Bonjour à tous,

Je ne suis pas un spécialiste de php mais je reprends un script d’authentification troué pour accéder à une page personnalisée !

Le probleme: Quand un utilisateur accède, après avoir saisi le coupe identifiant/password, à sa page
/usr/local/nginx/html/username_exemple, il peut sans saisir de nouvel identifiant accéder directement à la page d'un autre utilisateur /usr/local/nginx/html/autre_username_exemple !
C'est génant .... et n'ayant pas d'expérience en sécurité php je coince .... pourtant, session_start(); est bien dans le premier script .... Auriez vous des suggestions ? D'avance merci !
(ps: désolé pour les ^M dans le les scripts, un dos2unix passera par la prochainement.)

Je décris:

Fichier index.php qui affiche la page d'authentification.

<?php ^M
require_once 'main.php';^M
session_start();^M
^M
extract($_REQUEST);^M
if(isset($name) || isset($pass))^M
{^M
    if($name == $app['auth']['username'] && $pass == $app['auth']['password']) $_SESSION['in'] = 1;^M
    else echo "ERROR: Incorrect username or password!";^M
}^M
^M
if(!$_SESSION['in']) { ?>^M
        <html>^M
    <head></head>^M
    <body><BR /><BR />^M
<center><img src="./player/logos/logo-400x130-streaming.png"</center>
<div style="text-align:center;border:1px solid #7E0219">
Support technique par mail : doc@ie.com
</div>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">^M
   <p> <center> Username: <input type="text" name="name" value="">^M
   </center> <p />^M
    <p> <center>Password: <input type="password" name="pass">^M
    </center><p />^M
    <center><input type="submit" name="submit" value="Log In">^M
    </center>^M
    </body>^M
    </html>^M
        <?php^M
        die(); ^M
}^M
        ^M
^M
?>^M


Le fichier main.php appelé par le script précédent index.php (require_once 'main.php';)

<?php
require_once dirname(__FILE__).'/config.php';

// Connect to db
$conn = ($GLOBALS["___mysqli_ston"] = mysqli_connect($app['db']['host'],  $app['db']['username'],  $app['db']['password'])) or die("mysql Error: ".mysqli_error($GLOBALS["___mysqli_ston"]));
$db = mysqli_select_db( $conn, $app['db']['database']) or die("mysql Error: ".mysqli_error($GLOBALS["___mysqli_ston"]));

// Common classes
require_once dirname(__FILE__).'/controllers/MatchManager.php';



function getViewable($file, $vars=array())
{
        // Make sure view file exists
        if(!file_exists($file))
        {
                die("View file not found: ".$file);
                return false;
        }

        extract($vars);

        // Get buffer Buffer
        ob_start();
        include($file);
        $buffer = ob_get_contents();
        @ob_end_clean();
        return $buffer;
}


// Get key/value array from a jquery serializeArray() result
function getKVarray($jqArray)
{
        //$vars = array();
        foreach($jqArray as $pair)
        {
                $t = "\$".$pair['name']." = '".addSlashes($pair['value'])."';\n";
                eval($t);
                //$vars[$pair['name']] = $pair['value'];
        }
        //extract($vars);
        unset($jqArray, $pair, $t, $vars);
        return get_defined_vars();



Et enfin le fichier config.php dans lequel se trouvent les identifiants, mots de passe et les infos de connexion à une base de données Mysql/MariaDB (pour l'appli pas pour l'authentification).

<?php
global $app;
$app['db']['host'] = 'localhost';
$app['db']['username'] = 'scorer';
$app['db']['password'] = 'scorer_password';
$app['db']['database'] = 'scorer_db_name';

// Admin login information
$app['auth']['username'] = 'exemple';
$app['auth']['password'] = 'exemple_password';
Afficher la suite