2016-07-24 9 views
0

Benutzt ich die Sitzung richtig? Oder ist es so schlecht? Gibt es eine bessere Art und Weise Sitzung der Verwendung zur Sicherung von Web-AnwendungBenutzt ich die Sitzung richtig?

dies ist mein PHP-Code

$conn = new PDO("mysql:host=$host;dbname=$dbname",$username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); 
    $stmt = $conn->prepare("CALL sp_login(?,?)"); 
    $stmt->bindParam(1, $_username, PDO::PARAM_STR, 30); 
    $stmt->bindParam(2, $_password, PDO::PARAM_STR, 30); 
    $stmt->execute(); 
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 
    if($row){ 
     $_SESSION['Login_username'] = $_username; 
     header("location: index.php"); 
     exit; 
    } 

und dies ist der Code für die Überprüfung Sitzungen

if(isset($_SESSION['Login_username'])) { 

    return true; 
} 
else{ 
    header("location: login.php"); 
     exit; 
} 

ich irgendwo gelesen habe, dass es eine gute Idee, die Sitzung in der Datenbank zu speichern.

Ich werde es in der Datenbank speichern. Wie soll ich das machen? Nach einer erfolgreichen Anmeldung möchte ich die Sitzung in die Datenbank einfügen?

Und wie werde ich die gespeicherte Sitzung in meiner Datenbank verwenden?

Einige sagen, es ist besser this Weg und einige sagt es besser that Weg. Und jetzt bin ich verwirrt.

+2

Ich denke, Sie sind nicht gegen SQL-Injektion geschützt. –

+0

was? Ich bin nicht gegen SQL-Injektion geschützt? Wie? bitte ausführlicher. oder weisen Sie auf den Code hin. wo sql injection möglich ist. danke – askquestionzero

+0

@ PřemyslŠťastný Ich sehe die SQL-Injektion hier nicht. Kannst du es ausarbeiten? – ceejayoz

Antwort

0

Der einzige Grund, warum Sie Sitzungen in der Datenbank speichern müssen, ist, wenn Sie mehrere Server und ein serverübergreifendes Anmeldeskript oder ähnliches haben.

+0

Ich dachte es ist sicher. Danke. Um meine Webanwendung sicher zu machen, muss der Code integriert werden. im Beispiel. habe ich recht? und wie kann ich sicherstellen, dass die Anwendung in SQL-Injection sicher ist. Ich dachte, im mit vorbereiteter Aussage? – askquestionzero

+0

Hat die Post nicht gründlich lesen. Bearbeitete meinen ursprünglichen Beitrag. –

1

PHP speichert Sitzungen in Dateien, in einem Verzeichnis, das Sie mit der Funktion session-save-path (oder der auf dieser Seite erwähnten Einstellung) finden können.

Sie verwenden die Sitzung korrekt, da Sie immer session_start() anrufen, bevor Sie $_SESSION verwenden.

Denken Sie einfach an $_SESSION als ein normales Array, das automatisch für jeden Benutzer von PHP gefüllt wird. Praktisch kann alles angewendet werden, wie unset, isset ...

Speichern Sitzungen in Datenbank ist auch möglich, wie viele Frameworks bieten. Einige von ihnen haben ihre eigene Implementierung implementiert, nur um sie besser zu handhaben, aber einige verwenden den Standard-PHP-Anbieter.

Wie Jay C Antwort erwähnt, speichern Sie Sitzung in Datenbank, wenn Sie eine verteilte Anwendung haben, die auf mehreren Knoten ausgeführt wird. Obwohl dies auch mit freigegebenen Dateisystemen gehandhabt werden kann (teilen Sie einfach den genannten Pfad auf allen Knoten).

Wie Sie Ihren eigenen Session-Handler implementieren, erfahren Sie unter PHP documentations.

Um herauszufinden, die Standard-Handler von Ihrem PHP zur Verfügung gestellt, suchen Sie nach "Registered save handlers" in der Ausgabe von phpinfo().

Wenn Sie nur gehört gehört, dass Speichern Sitzung in Datenbank ist eine bessere Idee, Sie brauchen es wahrscheinlich nicht. Vertrauen Sie mir, das Speichern der Sitzung in der Datenbank wirft viele Probleme auf, denen Sie bei der Verwendung des Dateisystems nicht gegenüberstehen würden. Datenbanken sind unter Last schwierig zu handhaben, und Sitzungen in der Datenbank können die Datenbank leicht belasten. Tu es einfach nicht, wenn du nicht ganz sicher bist, dass du es willst.

-2

Sie haben zu viele verschiedene Fragen gleichzeitig gestellt.

Benutzt ich die Sitzung korrekt? ja.

tun es so ist schlecht? nicht.

Gibt es eine bessere Möglichkeit, die Sitzung zum Sichern der Webanwendung zu verwenden? nicht wirklich.

Ich werde es in der Datenbank speichern. Wie soll ich das machen? wie auch immer Sie wollen.

Nach einer erfolgreichen Anmeldung möchte ich die Sitzung in die Datenbank einfügen?

Und wie verwende ich die gespeicherte Sitzung in meiner Datenbank? Sie verwenden es genau wie Sie bereits, mit $ _SESSION und Session_start().

Wenn Sie Sitzungen in der Datenbank speichern wollen, schauen Sie sich „session_set_save_handler“ und „SessionHandlerInterface“ in der PHP-Dokumentation. Diese diktieren zu PHP, wie die Session-Daten geladen und gespeichert wird, haben sie nichts zu tun, wie der $ _SESSION var verwendet wird - was das gleiche ist, unabhängig davon, wie/wo die Sitzungsdaten gespeichert werden.