Seite 1 von 1

Post Method

Verfasst: Sa 25.Aug, 2007 21:43
von KeineAhnung
Ich habe eine Datei, die übergibt den eingegeben Text folgendermaßen:

Code: Alles auswählen

<form action="ausgabe.php" method="post">

so, aber wie schaffe ich es, das mein 2 script (mit dem namen ausgabe.php) nur die "Post dingsdabumsda oder wie die heißen" von meinem server annimmt, denn so wies jetzt ist kann man dieses:

Code: Alles auswählen

<form action="ausgabe.php" method="post">
auch bei anderen seiten hinmahcne, nur dann vor "ausgabe.php" noch meine seiten URL, und dann nimmt der diese "Post dingsdabumsda oder wie die heißen" trotzdem an, wie kann ich das verhiendern ?

Verfasst: So 26.Aug, 2007 01:02
von oxpus
???

Mal zum Grundsätzlichen:
Ein Formular, welches mit <form ...> </form> erstellt wird, überträgt Daten, wenn man ein Submit sendet.
Letzteres geschieht meist, in dem man auf einen "Submit"-Button klickt, der erstellt werden muss, um das Formular absenden zu können.
Die Methode, also GET oder POST ist dabei nicht unerheblich, bei einem Formular bietet sich aber am besten POST an.

Damit wäre, zumindest erst einmal von der Definition her, das Formular erstellt und würde auf Interaktion des Users hin Daten an den Server senden.
Dieser liest die Daten dann mit $_GET oder $_POST (kommt dann eben auf die Formular-Methode an!) aus.

Bleiben wir beim üblichen, also $_POST:
Mit PHP kann man die POST-Daten mit $_POST (alte Version = $HTTP_POST_VARS = phpBB 2) auslesen.
Wenn ein Formular abgesendet wird, werden damit auch so genannte Parameter mit erstellt und diesen die betreffenden Werte zugewiesen.
Das geschieht entweder im action-Element des form-Tags, also z. B. action="index.php?start=0", wobei dann start der Parameter ist, hier mit dem Wert 0, also für PHP auch "empty".
Oder die klassische Weise per input-Tag, wie z. B.:

Code: Alles auswählen

<input type="text" name="username" value="" />
um ein Textfeld (mit Standardgrösse und -formatierung) mit dem Namen "username" zu definieren, was beim Seitenaufbau zunächst leer ist.
"username" ist hier dann der Parameter, der mit $_POST ausgelesen werden kann.
Also dann $_POST['username'] (die Globals $_GET und $_POST sind immer Arrays).

Und dann kann man im bei "action" angegebenen Script so mit diesen Werten weiter arbeiten...

Verfasst: So 26.Aug, 2007 01:09
von KeineAhnung
wenn ich das mit dem klassichen mache gehts ja so wie ichs will, aber jemand anderes könnte dann einfach das erste script mit der eingabe kopieren und somit dann mit der POST methode auf 2 verweisen, script 1:

Code: Alles auswählen

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
  <head>
    <title>MD5 Verschlüsseln</title>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <form action="ausgabe.php" method="post">
      <center>
         <p>Gib das zu verschlüsselnde Passwort/Text ein und klicke danach auf "Ok", danach wird der Text/Passwort MD5 verschlüsselt</p>
        <input type="text" size="17" name="Inhalt"><br>
        <br>
        <input type="submit" value="OK">
      </center>
    </form>
  </body>
</html>
und in script 2 benutze ich folgenden code:

Code: Alles auswählen

<?php
echo md5($_POST["Inhalt"]);
?>
wie schon oben (in diesem post) geschrieben funktioniert alles, nur das eine person script 1 kopierne und damti direkt an script dieses POST senden oder so, so ganz vesteh ich das eh nicht :D

Verfasst: So 26.Aug, 2007 01:19
von oxpus
Daß jemand ein Formular erstellt und abschickt und es auf einer anderen (z. B. einer Deiner) Seiten landet, ist nichts neues.
Du musst daher nur sicher stellen, daß der User, der das Formular auch abschickt, selbiges auch darf.
Dazu gibt es in phpBB ja die betreffenden Möglichkeiten dazu, ausserhalb von phpBB kann man die IP als Referenz nehmen, sofern diese auch in einem Cookie gespeichert wurde (ein ganz normales Session Management eben).

Ohne Userprüfung ist es immer unsicher, weil man eben "türken" kann.
Aber dann wären die Daten eh im betreffenden Script zu prüfen, ob man logisch korrekte Daten erhalten hat oder nicht.
Wer hier sicher arbeiten will, muss eh auf andere Protokolle wie HTTPS umstellen und/oder zumindest ein Session Management integrieren.

Verfasst: So 26.Aug, 2007 01:23
von KeineAhnung
ach, egal, für meine sachen genügt das das auch andere das nehmen können (SESSIONS ??? xD sowas kenn ich nicht xD)

Verfasst: So 26.Aug, 2007 12:01
von KeineAhnung
[quote="oxpus";p="76246"]ein ganz normales Session Management eben).[/quote]

und wo gibts dazun tutorial ? :D

(ja ich war auf php.net, aber das hat mir ja schon biem 1 schritt geholfen, mehr aber nicht :wall: )

also ich habe es hinbekommen das wenn ich das forumular abschicke auf z.B:

Code: Alles auswählen

/ausgabe.php?PHPSESSID=w798t48oeao68arw6478orfrthrfzrz
oder so komme, aber wie schaffe ichs das z.B. das 2 script das überprüft ob die richtig ist... oder nützt das oben von mir überhaupt was ???

Verfasst: So 26.Aug, 2007 12:45
von oxpus
und wo gibts dazun tutorial ?
Nrgends. Das Session Management muss immer individuell aufgebaut werden, je nach Bedarf eben.

Warum willst Du denn das Formular so gezielt schützen?
Werden denn sooooo sensible Daten übertragen, daß sich der Aufwand lohnt?

Nochmal:
Ohne ein komplettes Session Management sollte man keine sensiblen Daten verarbeiten, alles andere lässt sich auf Logik hin prüfen.
Und die PHPSESSID würde ich auch nie in einem Quellcode verwursten.
Ist auch eine Sicherheitslücke!

Verfasst: So 26.Aug, 2007 13:20
von KeineAhnung
naja, so sicher sind die daten jetzt nicht, bei der datei1 wird ein text/passwort eingegeben, und bei datei2 das passwort/text ion MD5, Crypt, SHA1, und noch 2 anderen arten ausgegeben.

Verfasst: So 26.Aug, 2007 15:27
von oxpus
Also ohne jetzt wirklich sensible Vorgänge zu steuern, solltest Du Dir hier überlegen, warum überhaupt eine Absicherung nötig sein soll.
Zumal auch erst ein Hacker auf Deine Seite aufmerksam sein muss, um Interessantes zu entdecken, was sich zu holen lohnt.

Wenn man Passwörter über ein Formular sendet, ist es letztlich beinahe egal, wie sicher das Form ist, da diese ja immer zu prüfen sind, um sie gegen irgendwas zu vergleichen. Erst dann steht ja die Korrektheit fest.
Der Übertragungsweg dahin ist dann egal.
Und wenn hier ein anderer "von aussen" mit einem getürkten Formular die Daten absendet, muss er immer noch die korrekten Daten senden, um weiter zu kommen.
Also wäre hier die Formular-Sicherheit wirklich zu vernachlässigen.

Und auch in Systemen mit Session Management muss man immer prüfen, ob die gesendeten Daten auch wirklich korrekt sind.
So werden Session-Daten aus den $_SERVER-Globals mit den Cookies ebenso verglichen, wie Passworteingabe mit den Daten in der Datenbank zum betreffenden User.
Da ist es auch egal, von wo das Formular kommt.
Einen wirklichen Nutzen hat man also nicht, wenn man es faken wollte ;)

Zuletzt müsste man eben das Script kennen, welches man mit einem gefakten Form anspricht, um an den richtigen Stellen die richtigen "schädlichen" Daten zu senden.
Und selbst die kann man noch mit einfachen Mitteln filtern, wie das im phpBB auch überall gemacht wird.

Kurzum:
Mach Dir nicht zu viele Gedanken, um diese Möglichkeiten.
"Genutzt" haben gefakte Forms noch nicht wirklich.

Verfasst: So 26.Aug, 2007 15:29
von KeineAhnung
achso ok, dann lass ichs einfach so ;)