Re: _php,_mysql_->_fotos_aus_db_laden_und_fuer_WEB-Sei

Christian Boltz <suse-/[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo Tim Oliver, hallo Leute,

irgendwas hat das Subject zerrupft. Ich repariere wenigstens mal das 
"ü".

Am Dienstag, 7. September 2004 13:23 schrieb Tim Oliver Wagner:
> [...]
> Leider folgenden Output im Browser:
>
> The image
> “http://localhost/websites/post-sv-badminton.de/index_getPic.php4?id=
>f326363aeb3cbd1c3ed4ec5a2b8250e7” cannot be displayed, because it
> contains errors.

Schuss ins Blaue: Irgendwas wird vor dem Bild ausgegeben. Das kann ein 
Leerzeichen oder eine Leerzeile sein (steht das "<?php" wirklich _ganz_ 
am Anfang des Scripts?) oder aber eine Fehlermeldung.
Der Abruf des Bilds mit   lynx -dump > tempfile   und anschließenem 
Betrachten des Anfangs von tempfile sollte das klären.

Außerdem empfehlenswert:   log_errors = on   in /etc/php.ini 
(anschließend Apache neu starten), damit Fehlermeldungen auch im 
Apache-Errorlog landen.

> Hier der Code Ausschnitt:
>     $connection = connectToDefaultDB();
>
>     $query = "SELECT * FROM fotos WHERE id='" . $_REQUEST['id'] . "";

Schöne Sicherheitslücke...

Denk nur mal an den URL-Parameter   "...?id=10;DELETE * FROM fotos", 
natürlich mit sauber escapten Leerzeichen und so.

Daten, die vom User kommen, sollten *nie* ungeprüft verarbeitet werden. 
In diesem Fall bietet sich mysql_quote an, im Allgemeinen auch 
preg_match und/oder preg_replace zum Überprüfen oder 
"gültigmachen" [1] ;-) der Daten.

Lesetipps:

12.11. Prüfe importierte Parameter. Traue niemandem
 http://www.dclp-faq.de/q/q-sicherheit-parameter.html 

12.1. Wie unterscheide ich böse Variablen von guten?
 http://www.dclp-faq.de/q/q-security-variablen.html 

> Ich hoffe es kann mir noch jemand einen kurzen Tipp geben.

Ja: Lass das TOFU bleiben - http://learn.to/quote

[Fullquote gelöscht]


Gruß

Christian Boltz

[1] kann z. B. dadurch erfolgen, dass nur gültige Zeichen erlaubt werden 
    und alles andere rausgefiltert wird. 
    Als sed-Befehl:   s/[^a-zA-Z0-9]/_/g   - sprich: alles außer
    Buchstaben und Ziffern wird durch einen Unterstrich ersetzt.
-- 
> David, bitte wegschauen... Nein David, das hast Du nicht gesehen. Es
> ist alles OK, David... Ganz ruhig... :-)
*augen wieder aufmach* *haende von den ohren nehm*
Haeh? Was? Hab ich was verpasst?
[> Thomas Hertweck und David Haller in suse-linux]


-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    suse-programming-unsubscribe-IBi9RG/[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-programming-help-IBi9RG/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.