• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

PHP Session - ich bekomm es einfach nicht hin...

anony

Neu angemeldet

Registriert
30 Nov. 2014
Beiträge
47
Hi,

sorry, ich wieder. Habe mich bereits durch diverse Foren und Seiten wie PHP.NET usw gewälzt aber irgendwie bekomme ich das nicht zum laufen :dozey: :m

Wenn ich einen Bild-Upload per Formular realisiere, wie verhindere ich es, dass das Bild mit F5 erneut hochgeladen wird?

Im Formular habe ich bereits ein hidden Feld mit einem Zufallswert, erzeugt aus uniqid(); (wenn mir jemand sagen kann, wie ich mit einer einzelnen PHP-Funktion einen längeren/sichereren Zufallswert erzeuge, gerne! - vielleicht md5($uniqid)?).

Das Formular.php und das Uploadscript.php sind beide in eine Seite includet, heißt, sie Session habe ich nicht mit session_start(); sondern mit einem PHP.INI-Eintrag (session.auto_start = On) realisiert.

Danke für eure Geduld und die Antworten schon mal! :D
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
Hey anony,

es wäre gut, deinen Code zu kennen, um dir direkt sagen zu können, wo das Problem liegt.

Ansonsten kann ich dir nur allgemeine Tipps geben:
- einen längeren Zufallswert kannst du mit uniqid('', true) erzeugen, dieser ist dann statt 13 Zeichen insgesamt 23 Zeichen lang
- md5 bildet dir einen Hashwert, da aber die Anzahl der möglichen von uniqid() erzeugten Strings unverändert bleibt, gibt es auch nur maximal so viele einzigartige Rückgabewerte, wie es einzigartige Eingabewerte gibt (maximal, da md5 eine Hashfunktion ist und theoretisch Kollisionen möglich sind, d.h. zwei verschiedene Eingabeparameter ergeben denselben Rückgabewert).
- Grundsätzlich sieht der Schutz vor doppeltem Absenden so aus: Beim Aufruf des Formulars wird der Zufallswert generiert, in die Session und in ein verstecktes Feld des Formulars geschrieben. Wenn das Formular abgesendet wurde, wird geprüft, ob der Wert aus der Session mit dem der Formularübermittlung übereinstimmt und wenn ja, dann wird der Wert in der Session wieder zurückgesetzt, z.B. auf einen leeren String. Bei erneuter Formularübermittlung würde dann die Überprüfung, ob Sessionwert und Formularwert übereinstimmen, fehlschlagen.
- Mit dieser Methode verhinderst du nicht nur doppelte Bilduploads, sondern das Prinzip findet im Allgemeinen zur Abwehr von Cross Site Request Forgery statt.
 

anony

Neu angemeldet

Registriert
30 Nov. 2014
Beiträge
47
  • Thread Starter Thread Starter
  • #3
Aktueller Stand ist folgender:
Formular.php:
[src=php]<?php
session_start();
$uniqid = uniqid('', true);
$_SESSION["einmalkey"] = $uniqid;
?>


...
[/src]

--
Uploadscript.php:
Hier habe ich inzwischen nichts mehr ^^
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
Hallo anony,

kannst du mit meinen Ansätzen etwas anfangen? Wenn nein, woran scheitert es? Der von keksautomat verlinkte Artikel zeigt dir, wie die von mir beschriebene Vorgehensweise in programmierter Form aussehen könnte.
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
Hallo anony,

ich möchte kurz eine Aussage von mir korrigieren:
Wenn das Formular abgesendet wurde, wird geprüft, ob der Wert aus der Session mit dem der Formularübermittlung übereinstimmt und wenn ja, dann wird der Wert in der Session wieder zurückgesetzt, z.B. auf einen leeren String.

Das Zurücksetzen auf einen leeren String wäre sicherheitstechnisch problematisch, da nach einer erfolgreichen Formularübermittlung ein CSRF-Angriff möglich ist, bspw. indem ein Angreifer das Feld für das CSRF-Token auf einen leeren String setzt. Besser wäre es, ein neues, zufälliges Token zu berechnen.
 

p3Eq

zu nichts zu gebrauchen

Registriert
15 Juli 2013
Beiträge
358
Das ist kein funktionierender Schutz gegen doppelte Uploads, da auch der POST-Wert 'submit' erneut übertragen wird.
 

anony

Neu angemeldet

Registriert
30 Nov. 2014
Beiträge
47
  • Thread Starter Thread Starter
  • #9
CSRF Token war das Stichwort, danke euch! :)
 
Oben