Peter Müller: in cgi session abfragen

Hallo

Ich benutze eine PHP-Umgebung mit Session-Variablen. Nun soll in dieser Umgebung ein Formular an ein CGI-Script gesendet werden. Bei diesem Script soll zu Sicherheitszwecken die Session-Variable abgefragt werden. Bis jetzt konnte ich leider nur die Variable name des Formulars abfragen. Ich hab's mit use CGI::Session; probiert, leider ohne Erfolg.

Weiss ev. jemand wie die korrekte Syntax lauten muss?

Gruss
Peter

#!/usr/bin/perl -w
use CGI;
$cgi = new CGI;
$name = $cgi->param('name');
print "Location: $name/index.php";
return;

  1. Moin!

    Ich benutze eine PHP-Umgebung mit Session-Variablen. Nun soll in dieser Umgebung ein Formular an ein CGI-Script gesendet werden.

    ...welches in Perl programmiert ist. Da frage ich mich: Wo kommt dieses Skript her, dass du es nicht einfach auch in PHP programmieren kannst? Würde die Sache mit dem Zugriff auf die Session-Daten erheblich vereinfachen.

    Bei diesem Script soll zu Sicherheitszwecken die Session-Variable abgefragt werden.

    Welche Sicherheitszwecke sind das?

    Wenn ich "Sicherheitszwecke" höre, dann muß ich vermuten, dass dahinter mehr steckt als nur "ich will prüfen, ob jemand eine Session-ID abgekriegt hat." Denn so eine Prüfung kann man auch gleich weglassen, weil sie absolut wertlos ist.

    Sinnvoll wäre so eine Prüfung, indem man, basierend auf dem Session-Mechanismus, eine oder mehrere der Session-Variablen Wert prüft, die aufgrund vorhergehender Aktivitäten innerhalb dieser Session einen bestimmten Wert erhalten haben (beispielsweise ein erfolgreiches Login in einen zugriffsbeschränkten Bereich).

    Das erfordert seitens Perl dann aber, dass der PHP-Sessionmechanismus re-implementiert wird, im Einzelnen: Perl muß lernen, welches Cookie, welcher URL-Parameter oder welches Formularfeld (bei POST) die Session-ID enthält. Basierend auf dieser Session-ID muß Perl dann die Session-Datei im temporären PHP-Verzeichnis auslesen und den Dateiinhalt, welcher das serialisierte $_SESSION-Array ist, in einer für Perl verfügbaren Datenstruktur zur Verfügung stellen. Sofern Perl schreibend Veränderungen an den Session-Informationen vornehmen soll, muß auch das Abspeichern nachprogrammiert werden - und all das so, dass konkurrierende Schreibzugriffe auf die Session-Datei ausgeschlossen werden (was ich mir schwierig vorstelle, da PHP je nach OS-Architektur hier auf eigene Mechanismen zurückgreift, die aber nur auf parallel arbeitende PHP-Skripte wirken, nicht jedoch auf Perl-Skripte).

    Idealer erscheint es, den Standard-Mechanismus von PHP durch einen eigenen Session-Speicher-Mechanismus zu ersetzen und beispielsweise in einer Datenbank zu speichern. Dann könnte man eine Speicherstruktur wählen, die sowohl für PHP als auch für Perl leichter zugänglich ist.

    - Sven Rautenberg

    1. Idealer erscheint es, den Standard-Mechanismus von PHP durch einen eigenen Session-Speicher-Mechanismus zu ersetzen und beispielsweise in einer Datenbank zu speichern. Dann könnte man eine Speicherstruktur wählen, die sowohl für PHP als auch für Perl leichter zugänglich ist.

      Besten Dank für die ausführliche Antwort! Guter Tipp mit der Datenbank - ich werde es damit versuchen.

      Gruss
      Peter