Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Formulare mit gesicherten hidden-Daten
Antwort
 
Themen-Optionen
Alt 12.03.2006, 05:53   Nach oben    #1
Neuer Benutzer
 
Registriert seit: 27.01.2006
Beiträge: 26
Standard Formulare mit gesicherten hidden-Daten

Formulare mit gesicherten hidden-Daten übergeben
Das Problem:

Es sollen in einem Formular, mit GET oder POST , ein paar Werte als hidden übergeben werden. Das Versenden der Daten wird immer vom Client (in diesem Fall der Benutzer) ausgeführt. Der Benutzer kann aber auch selber ein Formular generieren und die hidden-Werte manipulieren.

Mit anderen Worten , ich kann nicht davon ausgehen, dass das von mir erstellte Formular auch für den Versand der Daten oder den richtigen Inhalt verwendet wird. Es müssen also Vorkehrungen getroffen werden, die das Manipulieren unmöglich machen , oder zumindest erschweren.

Ansätze zur Lösung:

Schritt 1:

Es ist sicherzustellen, dass das Formular vom Versender kommt.
Um dies zu erreichen muss mit einem Zufallscode, eine Kombination aus zufälligen Zahlen und Buchstaben erstellt werden. Empfohlene grösse des Zufallscode sind 16 oder mehr Zeichen. Der Zufallscode wird ebenfalls als hidden-Wert im Formular dem Client übergeben. Auf dem Server muss der Zufallscode in einer Session zwischengespeichert werden, um den Zufallscode bei der Überprüfung vergleichen zu können.

Der Versender hat schon mal kaum die Möglichkeit den Zufallscode zu erraten. Er kann nur nach Aufruf des richtigen Formulars seine Daten versenden.

Ein Problem besteht allerdings noch. Dem Benutzer steht noch die Möglichkeit offen, das Formular auszurufen und somit auch den passenden Zufallscode zu erhalten. Danach könnte er die hidden-Daten mit den passenden Zufallscode manipulieren.

Um auch das zu verhindern kann man alle hidden-Werte zuvor miteinander als String Verknüpfen und mittels md5-Funktion in einen sog. MD5-Hash umwandeln. Die gleiche Methode wird bei nach dem Empfang der Formulardaten mit diesen Daten wiederholt und beide MD5-Hash's werden verglichen. So kann einen Manipulation der hidden-Werte ausgeschlossen werden.


Diese Methode der Werteüberprüfung funktioniert nur mit Werten die nicht Verändert werden oder nicht verändert werden dürfen. Beispielsweise bei der Navigation von Seiten.

Für Verbesserungen oder andere Lösungen bin ich offen:

org. Quelle: http://tecbase.dyndns.org/forum/viewtopic.php?t=17
Alpha Centauri ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 09:35   Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 19.08.2005
Beiträge: 115
Standard

Zitat:
Zitat von Alpha Centauri
Formulare mit gesicherten hidden-Daten übergeben
[..]Um auch das zu verhindern kann man alle hidden-Werte zuvor miteinander als String Verknüpfen und mittels md5-Funktion in einen sog. MD5-Hash umwandeln.[..]
Wenn ich dich richtig verstehe, sind dir die variablen also schon vorher bekannt. Warum speicherst du sie dann nicht einfach in der Session?
__________________
Programming today is a race between software engineers striving to build bigger and better
idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the
universe is winning.
Buhmann ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 11:21   Nach oben    #3
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard

Mja wenn die Daten in den hidden-felder für jedes Formular fest steht, dann ist es sinnvoller die Daten in die Session zu speichern. So kommt gar keiner erst auf die Idee, dass es dort noch daten gibt, die man manipulieren kann.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 17:44   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Imho haben Angaben, die nicht geändert werden soll oder gar sicherheitsrelevante Angaben nichts in hidden-Feldern zu suchen.

Einen ähnlichen Thread gab es hier schon mal.
hidden, sessions, cookies oder datenbank

Grüße, Ben.

Geändert von Jann Hendrik (03.09.2008 um 15:18 Uhr).
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 02:04   Nach oben    #5
Neuer Benutzer
 
Registriert seit: 27.01.2006
Beiträge: 26
Standard

Wenn ich die Variablen alle in einer Session speichere , habe ich das Problem, dass die Sessionvariablen im nachfolgenden Schritt erhalten bleiben. Ich müsste die betreffenden Session immer löschen. Dabei gibt es noch das Problem, dass ich auch mehrere Zweige von meinem letzten Punkt haben kann und in den nachfolgenden Zweigen nicht überall eine Funktion schreiben will um die Werte zu löschen.

Weiterhin will ich die Anderen Zweige teilweisse auch von anderen Stellen aufrufen können. Ich sehe in der Beständigkeit der Sessionwerte das Problem mit dem handling.

Wenn ich die Werte über hidden übergeben kann in sicherstellen, dass die Werte auch im 2. Schritt nicht mehr vorhanden sind.

Das ist z.Z. erst mal eine Lösung. Ich weiss ja nicht ob es da noch andere Ansätze gibt?
Alpha Centauri ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 14:41   Nach oben    #6
Irgendwas mit e
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 393
Standard

Du kannst doch einzelnen Sessionvariablen per unset() löschen.
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int

Geändert von Jojo (14.03.2006 um 15:21 Uhr).
Jojo ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 14:44   Nach oben    #7
Erfahrener Benutzer
 
Registriert seit: 19.08.2005
Beiträge: 115
Standard

schadet es denn, wenn die werte weitergespeichert werden?
__________________
Programming today is a race between software engineers striving to build bigger and better
idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the
universe is winning.
Buhmann ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 16:28   Nach oben    #8
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von Buhmann
wenn die werte weitergespeichert werden?
Na manchmal prüft man ja auch, ob eine Sessionvariable existiert.
Dann macht es schon Sinn diese zu löschen, wenn die Logik es nötig macht.

Beispiel:
PHP-Code:
if(array_key_exists('isLoggedIn'$_SESSION)) {
    
// mach was

Klar könnte man das dann auch auf "false" setzen. Aber unset() tut es ja dann auch.
Bin mir allerdings auch nicht sicher, wie denn die übergebenen Daten performancetechnisch zum Tragen kommen.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2006, 11:02   Nach oben    #9
Benutzer
 
Registriert seit: 27.02.2006
Beiträge: 38
Standard

Da reicht doch auch ein einfaches isset oder nicht?
freezer ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2006, 11:13   Nach oben    #10
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

War ja auch nur ein Beispiel.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hardware-RAID-Lösung robo47 Plauderecke 29 26.12.2007 04:49
Speicherung von unternehmenskritischen Daten bobby Datenbanken 5 23.05.2007 08:33
[JAVA] Wie man aus Java mit einem PHP-Script kommuniziert sparrow Tutorials 0 25.03.2006 22:24
daten in array eintragen und auslesen zerberos Allgemeine Java-Programmierung 15 20.02.2005 21:49
[PHP] Wie übergebe ich Daten per URL? Ben Tutorials 0 05.12.2004 14:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:17 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44