PHP Session-Sicherheit

  • Welche Richtlinien gelten für die Aufrechterhaltung der Sicherheit für verantwortungsbewusste Sitzungen mit PHP? Es gibt Informationen im gesamten Web und es ist an der Zeit, dass alles an einem Ort gelandet ist!

    04 May 2012
    mattytommoSkooz
13 answers
  • Ich würde sowohl IP als auch User Agent überprüfen, um zu sehen, ob sie sich ändern

     if ($_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']
        || $_SESSION['user_ip'] != $_SERVER['REMOTE_ADDR'])
    {
        //Something fishy is going on here?
    }
     
    05 August 2008
    Teifion
  • Sie müssen sicherstellen, dass die Sitzungsdaten sicher sind. Wenn Sie Ihre php.ini ansehen oder phpinfo () verwenden, können Sie Ihre Sitzungseinstellungen finden. _session.save_path_ gibt an, wo sie gespeichert werden.

    Überprüfen Sie die Berechtigung des Ordners und seiner Eltern. Es sollte nicht öffentlich (/ tmp) sein oder für andere Websites auf Ihrem freigegebenen Server nicht zugänglich sein.

    Wenn Sie die PHP-Sitzung trotzdem verwenden möchten, können Sie PHP so einstellen, dass eine anderen Ordner durch Ändern von _session.save_path_ oder Speichern der Daten in der Datenbank durch Ändern von _session.save_handler_.

    Möglicherweise können Sie _session.save_path_ in Ihrer php.ini (einige Anbieter) festlegen zulassen) oder für Apache + Mod_php in einer .htaccess-Datei im Stammordner der Site: php_value session.save_path "/home/example.com/html/session". Sie können es auch zur Laufzeit mit _session_save_path () _ einstellen.

    Überprüfen Sie Tutorial von Chris Shiflett oder Zend_Session_SaveHandler_DbTable , um einen alternativen Session-Handler festzulegen.

    18 August 2008
    Dinoboff
  • Wenn Sie session_set_save_handler ( ) Sie können Ihren eigenen Session-Handler festlegen. Zum Beispiel könnten Sie Ihre Sitzungen in der Datenbank speichern. Beispiele für einen Datenbanksitzungshandler finden Sie in den php.net-Kommentaren.

    DB-Sitzungen eignen sich auch, wenn Sie mehrere Server haben, andernfalls, wenn Sie dateibasierte Sitzungen verwenden, die Sie benötigen Stellen Sie sicher, dass jeder Webserver Zugriff auf das gleiche Dateisystem hat, um die Sitzungen zu lesen / schreiben.

    09 August 2008
    ejunker