2016-08-02 27 views
1

Neu in Sicherheit und fragen, wie sicher diese Art von Login ist? Ich schütze keine Bank-/Finanzdaten mit irgendwelchen Mitteln, sondern versuche, etwas sensible Daten zu sichern, die nicht der Öffentlichkeit zugänglich gemacht werden sollten. Ich benötige nur ein Passwort - keine offiziellen Logins sind gemacht.sha256 mit PHP Sitzung

Dies ist in einer Datei namens access.php, die ein Passwort-Eingabefeld enthält.

<?php 
session_start(); 
if (!isset($_SESSION['loggedIn'])) { 
    $_SESSION['loggedIn'] = false; 
} 

// sha256() password 
$password = '13d249f2cb4127b40cfa757866850278793f814ded3c587fe5889e889a7a9f6c'; 

if (isset($_POST['password'])) { 
    if (hash('sha256',$_POST['password']) == $password) { 
     $_SESSION['loggedIn'] = true; 
    } else { 
     die ('That is the incorrect password - Please leave now'); 
    } 
} 

if (!$_SESSION['loggedIn']): 
?> 

Dann benötigt meine index.php access.php beim Laden der Seite. Sollte der Zugriff außerhalb des öffentlichen Verzeichnisses stattfinden? Fehle ich noch etwas, das ich in Betracht ziehen sollte?

+3

[password_hash()] (http://php.net/manual/en/function.password-hash.php) - Best Practice zum Hashing und Überprüfen von Passwörtern in PHP –

Antwort

4

Neu in Sicherheit und fragen, wie sicher diese Art von Login ist?

  1. SHA-256: Sie sind das völlig falsche Werkzeug für den Job. Verwenden Sie password_hash() und password_verify():
  2. Zusätzlich SHA-256-length-extension attacks verwundbar ist.
  3. == Mit Hashes vergleichen hat zwei Schwachstellen:

, also Ihre Frage zu beantworten: Nicht sehr. Das Problem, das Ihr Code zu lösen versucht, ist unter Sicherheitsexperten bekannt und hat sich sehr bemüht, anderen die Lösung zu erleichtern. Deshalb gibt es password_hash() und password_verify(). Benutze sie.

Das heißt, willkommen zur Software-Sicherheit. Wenn Sie zusätzliche Ressourcen benötigen, um sich selbst weiterzubilden, lesen Sie diese application security reading list on Github.