www.mikrocontroller.net

Forum: PC-Programmierung PHP eigene Session-Verwaltung


Autor: Jürgen W. (lovos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich moechte ein PHP cgi schreiben fuer meinen Server bei alfahosting.
Dieses PHP soll mehrere Email-Accounts oeffnen und eingegangene Emails 
darstellen. Die zugangsdaten zu den POP3-accounts befinden sich auf dem 
Server. Fuer das PHP Script nehme ich ein weiteres Password.
Damit ich nicht jedesmal das Password eingeben muss, speichere ich eine 
erfolgte Zugangsberechtigung fuer die jeweilige IP ab.
$pathtmp=$_SERVER['DOCUMENT_ROOT']."/tmp/";

echo "Your IP:". $_SERVER[REMOTE_ADDR] ."<br />\n";

$valid=false;
$cont=explode("\n",file_get_contents($pathtmp."pop.txt"));
if ($cont[0]==$_SERVER[REMOTE_ADDR] &&
    time()<$cont[1]+3600*10)
  $valid=true;
else if (!empty($_POST['pw'])) {
  $pw=$_POST['pw'];
  $exp="123456"; //Beispiel-Passwort
  $cont=($exp==$pw? $_SERVER[REMOTE_ADDR]:"").
    "\n".time();
  file_put_contents($pathtmp."pop.txt",$cont);
  if ($exp==$pw) $valid=true;
}

if ($valid) {
?>
<h1>Here, protected contents</h1>
<?php
}

Da wollte ich mal wissen, wie sicher sowas ist.
Bei meinem Smartphone bin ich oefters im Internet mit wechselnden IPs, 
da muss ich jedesmal neu einloggen (Nachteil).
Aber ein anderer koennte meine fruehere IP erwischen und dann koennte er 
meine Emails lesen. Diese Wahrscheinlich tendiert aber gegen 0.
Gibt es andere Risiken bei meinem Programm?
Gruss, J.

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jürgen W. (lovos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die PHP-sessions kenne ich zwar, aber wollte sie aus 4 Gruenden nicht 
benutzen:
1. Mein CGI wird sowieso nur von einer Persion (ich) benutzt, es ist gar 
nicht notwendig, dass mehrere Sitzungen parallel verwaltet werden 
muessen.
2. Das Skript laeuft auf einen gemieteten Server, dort kann ich gar 
keine Einstellungen (php.ini) vornehmen. Von anderen CGI weiss ich, dass 
Alfahosting ziemlich viel nicht aktiviert hat.
3. Ich vermute, dass etablierte Programme und Programmiertechniken eher 
ausgehebelt/gehackt werden, als individuelle Bastelloesungen.

4. Eine PHP-Session wird beendet, wenn man sich ausloggt (oder 
Browserfenster schliesst??). Genau aber das mache ich ja auf meinem 
Arbeitsrechner oder Smartphone. Trotzdem sollte die Zugangsberechtigung 
gemerkt werden.
Gruss, J.

Autor: Jürgen W. (lovos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Daten "IP-Adresse" und "Zeitpunkt der Authentifizierung" speichere 
ich am Server in einer Temporaer-Datei ab, die auch von aussen gelesen 
werden kann mit www.meineseite.de/tmp/pop.txt.
file_put_contents($pathtmp."pop.txt",$cont);

Das muss nicht sein, es gibt bessere Orte, an die man von aussen nicht 
zugreifen kann.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen G. schrieb:
> 1. Mein CGI wird sowieso nur von einer Persion (ich) benutzt, es ist gar
> nicht notwendig, dass mehrere Sitzungen parallel verwaltet werden
> muessen.

Macht nichts, Sessions kosten nichts.

> 2. Das Skript laeuft auf einen gemieteten Server, dort kann ich gar
> keine Einstellungen (php.ini) vornehmen. Von anderen CGI weiss ich, dass
> Alfahosting ziemlich viel nicht aktiviert hat.

Sessions sind auf jeden Fall aktiviert.

> 3. Ich vermute, dass etablierte Programme und Programmiertechniken eher
> ausgehebelt/gehackt werden, als individuelle Bastelloesungen.

Das nennt sich "Security by Obscurity", und ist i.d.R. ein Trugschluss, 
außer man weiß genau was man tut. In diesem Fall ist deine Lösung 
schlechter als die etablierte, welche auf Cookies basiert statt auf 
IP-Adressen.

> 4. Eine PHP-Session wird beendet, wenn man sich ausloggt (oder
> Browserfenster schliesst??). Genau aber das mache ich ja auf meinem
> Arbeitsrechner oder Smartphone. Trotzdem sollte die Zugangsberechtigung
> gemerkt werden.

Die Lebensdauer des Session-Cookies lässt sich konfigurieren. Zur Not 
musst du von Hand einen Cookie setzen. Der Login basierend auf der 
IP-Adresse ist jedenfalls keine gute Lösung.

Autor: Jürgen W. (lovos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Lebensdauer des Session-Cookies lässt sich konfigurieren. Zur Not
> musst du von Hand einen Cookie setzen. Der Login basierend auf der
> IP-Adresse ist jedenfalls keine gute Lösung.

Bei einem Firmennetzwerk haben alle PCs nach aussen hin die gleiche IP.
D.h. wenn ich mich von meinem PC einlogge, hat mein Kollege auch Zugriff 
auf den Inhalt.
Meinst Du das mit "keine gute Lösung"?
Ansonsten haette ich gedacht, dass die IP-Adresse sich schwieriger 
faelschen laesst, als dass man ein Cookie nachahmt.
Da ich auch vom Firmenrechner meine Emails anschauen moechte, habe ich 
mittlerweilen auch ein Cookie implementiert, d.h. IP-Adresse muss 
stimmen und Cookie.
Bliebe noch die Frage, ob eine Session-Verwaltung ggue eines "Cookie von 
Hand setzen" noch Vorteile bietet (ausser Uebersichtlichkeit)??

Gruss, J

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.