PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicheres Formular durch $HTTP_SERVER_VARS['HTTP_REFERER']


Herr-Zinfarkt
23.06.2004, 17:55:13
Hallo und schönen guten Abend!

Erst mal ein dickes hoch auf unsre Nationalelf, die müssen heut abend was rocken!!!!!!!!!!

So nun zum Thema:
Bin dabei ne kommerzielle Seite für ne Firma zu basteln. Hab da einige Formulare und bis dort hin funzt an sich auch alles. Kam die Woche dann auf das Thema Sicherheit!!

Die Formulare sind so aufgebaut, dass alles in einer Datei abläuft die sich immer selbst aufruft - eingabeformular, überprüfung der daten und schreiben in db!

somit weis ich von wo die daten mittels POST kommen müssen. hab mir eben so gedacht, dass ich mir ja über $HTTP_SERVER_VARS['HTTP_REFERER'] den absender der daten holen kann und diesen dann mit dem jeweiligen dateinamen überprüfe.

Somit könnte ich gewährleisten, das die daten die in die db geschrieben werden immer von meinem formular kommen!


So, nun die Frage: Ist das sicher, oder kann man das auch noch irgendwie umgehen???

PS: schon mal thx und viel spaß beim fußball - gönnen wir uns mal nen paar bierchen!!!

PhiL_phpnoob
23.06.2004, 18:15:46
gegenfrage: wie kommst du zu der Annahme, dass die Daten nicht sicher übermittelt werden?

Ich würde das so machen: in deinem Formular gibt es ein HiddenFeld, mit irgendeinem Namen. Value sollte auf "1" gesetzt werden.

Beim abschicken des Formulars überprüfst du, ob diese Variable auf 1 gesetzt wurde, wenn ja müssen die Daten ja von diesem Formular kommen, oder?

Ich arbeite nur mit $_POST und dieser Überprüfung. Mir ist bislang noch kein Fall begegnet, wo Daten nach dem Abschicken manipuliert wurden.

Gruß

PhiL

Herr-Zinfarkt
23.06.2004, 18:29:40
jupp, das mit dem hidden feld hab ich auch eingebaut...

allerdings bringt dir das gar nichts, weil dein hidden-feld komplett mit value und name im quelltext des eingabeformulars oder zwischenformulars auftaucht und somit jeder deine überprüfung umgehen kann, indem er das geleiche feld in sein script einbaut und an dich schickt!

So, die daten könnten nicht sicher übermittelt werden WEIL:

dich jemand hacken will!! - bei komerziellen sachen kommt das schon mal vor - oder??

Aber auf jeden ein digges THX an dich

Dago
23.06.2004, 18:47:14
Der Referer ist in Sachen Sicherheit wertlos, da er komplett vom Clienten abhängt.
Du hast also weder die Garantie, dass diese Daten der Wahrheit entsprechen, noch dass der Referer überhaupt mitgeschickt wird (manche Browser bieten eine Option zur Referer-Unterdrückung).

Eigentlich kann es dir auch egal sein, welches Formular dein Client ausfüllt, oder? Im Prinzip füllt dein Client auch kein Formular auf deinem Server aus, sondern lädt sich eine Kopie herunter und füllt diese "offline" aus - Manipulation ahoi!
Das einzig Wichtige sind die "Nutzdaten" und von denen musst du jede einzelne Variable auf Validität prüfen. Der Client kann dir ja sonstwas andrehen...

Herr-Zinfarkt
23.06.2004, 18:51:45
thx dago, genau sowas wollt ich wissen!

hab alle variable auf validität überprüft, mittels regulärer ausdrücke, blabla....

dachte nur, man könnte sich so eine erhöhte sicherheit beschaffen, aber dem ist dann wohl nicht so ;-(

also schönen fußball-abend und nomma an alle nen digges dange

diver-network
24.06.2004, 11:09:07
Hi,

bzgl. Sicherheit und Formularen noch der Tipp, dieses eventuell per SSH zu übertragen. Allerdings muß SSH auf dem Server verfügbar sein und eingerichtet werden. Wie? Keine Ahnung, Google fragen ;-)

Dies ist unabhängig von PHP und Browser und bezieht sich, soweit ich weiß, nur auf die Kommunikation Client / Server.

Die übergebenen Daten müssen also immer noch und in jedem Fall auf dem Sever mittels PHP auf Validität geprüft werden!

Gruß,

Andy

P.S.: Hoffe, Du hast gestern beim Fußball o(( keinen Herzinfarkt bekommen ;-) ;-)

Bigdaddy
24.06.2004, 11:58:12
das Kind heisst SSL, nicht SSH
SSH gibts zwar auch, ist aber so ziemlich das gegenteil ;)

Was du eventuell machen kannst, ist eine Variable mittels session übergeben? und die dann prüfen? Glaub man kann keine session fälschen (ausser man kennt die var natürlich)

// Edit: zum einrichten von SSL: mittels SSH yast beauftragen das zu installieren ;) und dann halt noch im etc order des unix-servers die variablen anpassen, aber das findest alles in nem manual.

feuervogel
24.06.2004, 12:14:32
>Allerdings muß SSH auf dem Server verfügbar sein und eingerichtet werden. Wie? Keine Ahnung, Google fragen ;-)

oder beim provider ne lizenz beantragen (kostenpflichtig!)...ich weiß allerdings nicht, wie das mit openssl aussieht, kostet das auch was?

des weitern muss dann nur mit php der port überprüft werden über den client und server kommunizieren, der ist bei ssl glaub ich standardmäßig 443. dann werden die daten verschlüsselt übermittelt.

diver-network
24.06.2004, 12:36:40
@Bigdaddy und feuervogel:

Sorry, hab' da wirklich SSH und SSL verwechselt.
Kann, sollte aber nicht vorkommen. Danke, daß Ihr Herr-Zinfarkt und die anderen darauf hingewiesen habt.

Gruß,

Andy

Herr-Zinfarkt
24.06.2004, 18:28:57
thx für die alternative - werd denne mal nen bissel googlen und ma meinen server abchecken!!

cya