it-swarm.com.de

Sitzungsvariablen in einem Browser anzeigen und ändern

Debuggen eines PHP - Programms. Gibt es ein Add-On/Plug-In für den Browser, mit dem ich Sitzungsvariablen anzeigen kann (die PHP $ _SESSION ["foobar"])?

Am besten, wenn ich den Wert in den Variablen ändern kann.

25
ohho

Es ist nicht möglich, die in Sitzungen gespeicherten Werte auf der Clientseite zu ändern.

Das ist einer der Hauptgründe, warum Sie eine Sitzung über ein Cookie verwenden - SIE kontrollieren die Daten. Mit Cookies können Benutzer die Daten bearbeiten.

Die einzige Möglichkeit, auf Sitzungsdaten von der Clientseite aus zuzugreifen bzw. diese zu bearbeiten, besteht in einem Ajax-Aufruf oder einem anderen JavaScript-Mechanismus, um ein anderes PHP-Skript aufzurufen, das die Abfrage/Bearbeitung der Sitzungsdaten über die Funktionen session_ ausführt.

49
Jacob Relkin

$_SESSION ist ein serverseitiges Array von Variablen. Wenn wir die Werte lesen oder ändern könnten, könnten wir viele Dinge tun, um andere schlechte Dinge zu hacken oder zu verursachen. 

Mit phpinfo(); können wir jedoch Sitzungsvariablen anzeigen - den Wert können wir jedoch nicht ändern.

Noch besser können wir alle Sitzungsvariablen mit debuggen

print_r($_SESSION); 
//if you echo "<pre>" before, and a closing "</pre>" after, it prints very cleanly.

einige andere nützliche Befehle:

session_start(); // start session  -- returns Session ID
session_destroy(); // unset all session variable

Session ist ein Array. Wenn Sie also $_SESSION['key']='value'; setzen, ist es dasselbe wie $array['key']=value;. Das Besondere an $ _SESSION ist, dass es so bleibt, bis das Fenster geschlossen wird oder session_destroy() aufgerufen wird. 

21
apis17

Sie können diesen Code unten verwenden:

<?php
error_reporting(E_ALL);
session_start();
if (isset($_POST['session'])) {
    $session = eval("return {$_POST['session']};");
    if (is_array($session)) {
        $_SESSION = $session;
        header("Location: {$_SERVER['PHP_SELF']}?saved");
    }
    else {
        header("Location: {$_SERVER['PHP_SELF']}?error");
    }
}

$session = htmlentities(var_export($_SESSION, true));
?>
<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title>Session Variable Management</title>
        <style>
            textarea { font: 12px Consolas, Monaco, monospace; padding: 2px; border: 1px solid #444444; width: 99%; }
            .saved, .error { border: 1px solid #509151; background: #DDF0DD; padding: 2px; }
            .error { border-color: #915050; background: #F0DDDD; }
        </style>
    </head>
    <body>
        <h1>Session Variable Management</h1>
<?php if (isset($_GET['saved'])) { ?>
        <p class="saved">The session was saved successfully.</p>
<?php } else if (isset($_GET['error'])) { ?>
        <p class="error">The session variable did not parse correctly.</p>
<?php } ?>
        <form method="post">
            <textarea name="session" rows="<?php echo count(preg_split("/\n|\r/", $session)); ?>"><?php echo $session; ?></textarea>
            <input type="submit" value="Update Session">
        </form>
    </body>
</html>
2
CoderX

Beachten Sie jedoch, dass die Sitzungs-ID zwar serverseitig gespeichert wird, die Sitzungs-ID jedoch entweder in der URL GET/POST (eine sehr schlechte Idee) oder in einem Browser-Cookie gespeichert ist (bessere Sicherheit), jedoch immer noch anfällig für Manipulationen ist/attack/etc, wenn Sie Cookie-basierte Sitzungs-IDs nicht sorgfältig übergeben.

http://en.wikipedia.org/wiki/Session_fixation

http://en.wikibooks.org/wiki/PHP_Programmierung/sessions#Avoiding_Session_Fixation

0
pjm