PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Link nicht als GET sondern als POST senden.


rotalever
2008-07-04, 14:22:48
Wenn ich einen Link habe, z.B.

<a href="index.php?bla=blub">Link</a>

Dann wird der Datensatz "blub" mit Hilfe eines GET-Requests an den Server übertragen. Der Datensatz ist also nun in der darauffolgenden Seite in der URL sichtbar.
Man könnte das verhindern in dem man die Daten über POST versendet. Bisher habe ich das aber nur bei Formularen gesehen. Geht das auch mit "normalen" Links? Oder könnte man Formulare als Ersatz für die Links so einbauen, dass sie wie normale Links aussehen?

Wenn man nämlich zum Beispiel eine Tracking-Grafik einbindet, dann soll die ja nicht unbedingt alles mitbekommen.;)

Unfug
2008-07-04, 14:44:01
Spontan fallen mir da folgende Dinge ein:

Javascript --> Formular --> Onclick()
http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick

Redirect über .htaccess
http://www.drweb.de/htaccess/htaccess_weiterleitugen.shtml

PHP --> inlcude
http://de.php.net/include/

rotalever
2008-07-04, 14:48:40
Das mit der Weiterleitung kam mir auch in den Sinn. Praktischer wärs natürlich, wenn es gleich im HTML ginge.

Kinman
2008-07-04, 14:51:40
Außer über Formulare gibts keinen Weg.
Allerdings kann man Buttons auch so designen, dass sie wie ein Link aussehen.

Wenn Du verrätst was genau Du vor hast, kann man vielleicht anderwertig helfen.

mfg Kinman

rotalever
2008-07-04, 15:01:11
Außer über Formulare gibts keinen Weg.
Allerdings kann man Buttons auch so designen, dass sie wie ein Link aussehen.

Wenn Du verrätst was genau Du vor hast, kann man vielleicht anderwertig helfen.
Also ich habe ein paar Links, die bewirken, dass etwas in die Datenbank hinzugefügt wird, z.B.
index.php?action=add&id=1234
Und ich hab ein paar Links, die bewirken, dass etwas aus der Datenbank entfernt wird, z.B.
index.php?action=delete&id=1234
Die würde ich jetzt gerne zu Links machen, die so aussehen:
index.php
und
index.php
Dafür muss der Browser die Daten anders übertragen, beispielsweise wie beim Formular mit POST.

Kinman
2008-07-04, 17:19:25
Hmm..
2 Möglichkeiten:

1. base64_encode() und base64_decode()
Dann steht zumindest nichts mehr im Klartext

2. Du legst in der Session fest, was Du machen möchtest
$_SESSION['action'][1] = "delete id 1234"
$_SESSION['action'][2] = "change id 1234"

und dem Link gibst dann im Prinzip nur den Index mit index.php?index=2

Wobei man das noch verbessern kann, indem man die Indizes (Mehrzahl von Index?) eindeutig macht und anschließen entfernt.

mfg Kinman

rotalever
2008-07-04, 17:51:27
1. base64_encode() und base64_decode()
Dann steht zumindest nichts mehr im Klartext

Ok das bringt im Endeffekt rein gar nichts..

2. Du legst in der Session fest, was Du machen möchtest
$_SESSION['action'][1] = "delete id 1234"
$_SESSION['action'][2] = "change id 1234"

und dem Link gibst dann im Prinzip nur den Index mit index.php?index=2
Ja das wär möglich, dann müsste ich aber noch die Sessions verwalten, das ist mir zu kompliziert :biggrin:
Hätte gedacht, dass man das irgendwie im HTML umstellen kann, dass der Browser das nicht über die URL schickt.

asc
2008-07-04, 18:08:00
Ok das bringt im Endeffekt rein gar nichts..


Natürlich bringt das was, dann keiner mehr durch wildes rumtippen in der url so einfach deine db zamschießen.

Kinman
2008-07-04, 19:22:59
Ja das wär möglich, dann müsste ich aber noch die Sessions verwalten, das ist mir zu kompliziert :biggrin:
Hätte gedacht, dass man das irgendwie im HTML umstellen kann, dass der Browser das nicht über die URL schickt.

Dann mach in der Session einfach das Array, welches du mittels GET erhalten würdest und übermittelst einen AUTH Code, mit dem Du auf die Daten zugreifen lässt. Dann ist nicht soviel zu ändern.

mfg Kinman

rotalever
2008-07-04, 22:10:08
Natürlich bringt das was, dann keiner mehr durch wildes rumtippen in der url so einfach deine db zamschießen.
Naja base64 encoden ist dann aber auch nur Scheinsicherheit. Ich mache sowieso noch einen Verifizierungs-Hash in den Link rein und den Key für diesen Hash kennt nur der Server.
Wenn auch der geknackt würde, was eigentlich nicht passieren kann, dann könnten maximal, und auch wirklich maximal, die daten des eingeloggten Users hinzugefügt oder gelöscht werden. Ein user würde sich also durch "hacken" ggf. nur selbst schaden.
Außer er bekommt preparierte Links per email geschickt und klickt drauf, aber da ist dann ja noch der Hash.. Ich wiederhole mich;)


Werden die Sessions von PHP automatisch verwaltet?

Kinman
2008-07-04, 22:51:27
Klar....
ein session_start(); am Anfang reicht um die Session zu initialisiere. Danach die Daten einfach im Session Array ($_SESSION) speichern und das wars im Grunde

mfg Kinman

darph
2008-07-04, 23:18:00
Und, gerade wenn es um das Einfügen und Löschen von Datensätzen geht, nicht vergessen, die Variable auch wieder zu löschen.

rotalever
2008-07-04, 23:23:40
Und, gerade wenn es um das Einfügen und Löschen von Datensätzen geht, nicht vergessen, die Variable auch wieder zu löschen.
Welche Variable? Die Sessionvariable?

mbee
2008-07-05, 08:19:44
Natürlich bringt das was, dann keiner mehr durch wildes rumtippen in der url so einfach deine db zamschießen.
Das sollte man so oder so nicht können. Jeder mit ein klein wenig Verstand kann das bei einer schlampigen Umsetzung, die sich nur darauf verlässt, auch über ein selbst erstelltes Formular bzw. schützt Dich das Übertragen von Parametern und Daten via POST da kein Stück...

Sphinx
2008-07-08, 00:37:28
Ajax ist ganz nett.
-
Mit PHP könnte man auch Formulardaten mittels : fsockopen (http://de2.php.net/manual/en/function.fsockopen.php) senden

DraconiX
2008-07-08, 06:57:05
...Mit PHP könnte man auch Formulardaten mittels : fsockopen (http://de2.php.net/manual/en/function.fsockopen.php) senden

Ne Socketverbindung!? Das ist wie mit Kanonen auf Spatzen zu schießen :rolleyes: