2011-12-29 19 views
7

page1.php:Un utente può modificare una sessione PHP?

<?php 
session_start(); 
if ($_POST['password'] == "testpass") 
$_SESSION['authenticated'] = true; 
?>

page2.php

<?php 
session_start(); 
if (isset($_SESSION['authenticated']) && $_SESSION['authenticated'] == true) { 
echo "Super secret stuff!"; 
} 
?>

Può un utente entrare senza la super password sicura?

+1

Un utente non può modificare le sessioni PHP sul server. Possono solo creare un cookie legittimo e mascherarsi come utente che ha effettuato l'accesso, ma ciò richiederà loro di rubare un cookie valido in primo luogo. – AbdullahC

+1

Non è necessario il controllo della variabile rispetto a true nel caso di test, ma quando si confrontano i booleani è meglio usare il confronto identico. $ test === true. Cerca di essere severi ogni volta che è possibile. – MetalFrog

+0

@MetalFrog Lo so, ma se non fosse l'autenticazione (solo benchmark in questo caso) userei == perché posso anche fornire "true" o 1 o "1" – BronzeByte

risposta

13

No. I dati del $ _SESSION variabile è memorizzata sul server, inaccessibile dall'utente.

Una sessione è accoppiata a un utente tramite un cookie. Un cookie con un identificatore (cioè una lunga stringa casuale) viene inviato all'utente per identificare l'utente e collegarlo alla sua sessione. Se qualcun altro ha accesso a questo cookie, può usare lo stesso codice per fingere di essere l'utente, e in questo modo può entrare senza la password.

+2

Grazie per aver confermato che fornendo ulteriori informazioni :) – BronzeByte

+0

la domanda era "Un utente può entrare senza la password super sicura?" E la risposta è SI. –

+1

@PoelincaDorin - Penso che chiunque abbia un po 'di sale in testa possa vedere qual è il problema e qual è la risposta giusta. Il tuo non lo è. Questo è. –

1

La sessione può essere modificato solo dal codice PHP, è diverso da $_POST, $_GET, $_COOKIE ecc

Per inciso Penso che si possa utilizzare empty() per semplificare il condizionale:

<?php 
session_start(); 
if (!empty($_SESSION['authenticated']) { 
    echo "Super secret stuff!"; 
} 
?> 
+0

Era solo un punto di riferimento;) – BronzeByte

1

sessione potrebbe essere modificato in diverse occasioni .. Visualizza questo ->Session Poisoning

+0

+50! sorpreso di non votare su ... eventuali informazioni aggiornate? Puoi accedere alla risposta del QA? – wpcoder

Problemi correlati