PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Content-Type: image/jpeg" mit post manipulieren?



Arnon77
12.06.2009, 17:15
Hallo,

ich habe eine show_pic.php diese datei soll per


<img src="show_pic.php?id=test.jpg">
eine image anzeigen. Das ganze ist ja kein problem, nur in diesen fall kann ich nicht darauf verzichten
header("Content-Type: image/jpeg"); zu verwenden und das ganze über base64_decode anzuzeigen.

Zusätzlich benutze ich noch diese index.php:


<?php
$_POST[blabla]=="hallo"; // nur ein beispiel, in echt sind es formulare
echo '<img src="show_pic.php?id=test.jpg">';
?>
Jetzt möchte ich gerne das der $_POST[blabla] Wert auch in die show_pic.php übergeben wird. Der POST darf aber nicht an den Url dran gehängt werden.

Hat jemand eine Idee wie ich das problem lösen kann?

VeN0m
12.06.2009, 22:01
POST wird nie an die URL drangehängt. GET wird an die URL gehängt, POST wird "still und leise" übertragen.
Würde mal sagen, dass Du das Formular per POST an das selbe Dokument übermittelst und den Content-Type in der index.php angibst. Das müsste eigentlich auch gehen.



<?php
if(!$_POST) {

Formular

} else {

header("content-type: image/".$_POST['content_type']."");
print "<img src=\"show_pic.php?id=test.jpg\">";

}

?>


Ist doch das, was Du suchst, oder? Außer, dass ich print bevorzuge... ^^

Arnon77
14.06.2009, 14:51
nein das problem war, dass ich eine show_pic.php habe und die erstellt das bild mit den zugehörigen header, also darf das hauptscript nicht diesen header haben. Jetzt gebe ich durch ein formular in hauptscript eine post variable dazu. Diese variable soll aber auch an show_pic.php gesendet werden ohne es mit _GET dran zuhängen. Einfügen der show_pic.php tue ich ja wie schon oben gesagt mit
Code:
<img src="show_pic.php?id=test.jpg">doch so kann der post befehl nicht an show_pic.php gesendet werden, der ihn aber braucht um das bild zu bearbeiten.

Hoffe war verständlich^^

VeN0m
14.06.2009, 16:29
Naja wie willst Du das machen? POST übermittelt sich ja wie Du es schon passend ausgedrückt hast unsichtbar und wird nicht an die URL drangehängt.
Nun, wie übergibt man eine POST-Variable? Entweder per HTTP-Request mit z.B. Live HTTP Headers, Telnet und so weiter. Oder direkt per Formular. Da das Bild aber ja in der index.php gezeigt wird, in dem die show_pic.php mit einem GET-Wert als Bild eingefügt wird, so kannst Du kein Formular an die show_pic.php übermitteln ohne, dass der Inhalt der index.php weg wäre. Was möchtest Du denn übermitteln, was auf keinen Fall per GET gesendet werden darf?

Arnon77
14.06.2009, 17:00
um genau zu sein will ich per formular den key eingeben, den show_pic.php dann benutzt um das bild zuenschlüsseln und dann anzuzeigen. Das passwort kann ich ja schlecht über get übermitteln^^
Naja die einzige idee die mir einfällt wäre ein login mit cookie. Aber dann fehlt mir wiederum die sicherheit, den die _SESSION könnte dann ausgelesen werden und das wäre dann wiederum nicht so sicher.

VeN0m
14.06.2009, 19:30
Wie wäre es, wenn Du Dir einen eigenen Verschlüsselungsalgorhytmus zusammenbastelst? Als Grundlage kannst Du ja Base64 oder sowas nehmen. Erst verschlüsselst Du das Ding und dann zählst Du jeweils zwei dazu:
1 wird zu 3, a zu c, c zu e etc.
Kommt keiner drauf und das kann keiner entschlüsseln.

Oder Du trägst den Aufrufer in eine Datenbank ein. "online" oder so. Jeder Aufrufer bekommt einen Key zugeteilt. Beim Aufruf wird geprüft, ob die IP mit dem Key übereinstimmt (Datenbankabfrage). Wie wäre es mit so einer Methode? ;)

Übrigens kann man per Live HTTP Headers auch ganz einfach ein über POST übermitteltes Passwort abfangen ;).

Arnon77
14.06.2009, 20:32
also das mit zeichen mit anderen ersetzen ist mir dann viel zu unsicher^^
den en und decrypting prozess hab ich ja schon längst. Es geht nurnoch um die einfügen von bilder die verschlüsselt sind. Aber ich denke das mach ich dann doch lieber mit cookies. Und dieses Live HTTP Headers ist doch ein firefox addon oder? dann ist es ja egal, da der user es ja manuel einfügen muss.

Ich überleg grad den masterkey in eine php datei zu schreiben und diese nach logout immer wieder neu zu verschlüsseln. Um dann an die daten zu kommen muss man aber erst mal diese datei entschlüsseln. Der key besteht dann aus masterkey+ z.B ein md5 hash einer anderen seite. Wenn man gehackt wird bringt einen das passwort auch nichts mehr. Den es ändert sich jedes mal. Und man kann bei dem fall eines diebstahls einfach die andere seite löschen.

VeN0m
14.06.2009, 21:16
Ja, nur haben die meisten, die "böse Absichten" haben Live HTTP Headers installiert ;). Ist aber auch sonst sehr nützlich.
Die Idee mit dem Masterkey klingt nicht schlecht; vielleicht wäre ein salted Hash aber auch nicht schlecht. Oder improved hash algorythm *klick* (http://www.php-einfach.de/improved_hash_algorithm.php).

An die Übertragung des PW's per URL wirst Du jedenfalls nicht vorbei kommen. Das wichtige ist dann nur, dass das PW zwar entschlüsselt aber nicht von einem "Hacker" gecracked werden kann.

Arnon77
15.06.2009, 15:10
die idee mit den improved hash algorythm hört sich sehr gut an! Dann könnte ich sogar überlegen ob ich passwörter in klartext schreibe. Denn man könnte den login noch die anzahl der md5 hashes hinzufügen und so müsste man erst einmal wissen wie oft das passwort das letzte mal verschlüsselt wurde.
Das könnnte sogar sehr praktisch werden wenn man nicht nach jeden logout ein neues passwort haben will sondern einfach die md5 anzahl und das normale passwort angibt^^

Und das formular mit der POST variable werde ich wohl oder übel mit einer session lösen.