Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Parameter übergeben (https://www.delphipraxis.net/111691-%5Bphp%5D-parameter-uebergeben.html)

Yheeky 7. Apr 2008 23:00


[PHP] Parameter übergeben
 
Hey,
ich habe folgendes Problem: Ich habe ein PHP Script und möchte dies gerne mit einem Parameter aufrufen. Der Aufruf sieht wiefolgt aus:

Code:
http://meine-Homepage.de/script.php?username=Test
Ich habe in der PHP Datei folgenden Code:
Code:
<?php
  include('server.php');

 $sqlabfrage = "SELECT * FROM user WHERE name='$username' ";

 $res = mysql_db_query($db, $sqlabfrage);
 $num = mysql_affected_rows();
     
 echo $sqlabfrage;
 
?>
In der Server.php stehen die Serverdaten.
Zum Testen habe ich mir die "sqlabfrage" also echo anzeigen lassen, doch egal, welchen Usernamen ich eingebe, es kommt immer folgende Ausgabe:

Code:
SELECT * FROM user WHERE name ''
Kann mir da jemand sagen, wieso nicht der übergebene Parameter angezeigt wird? Was mache ich da denn falsch?

freak4fun 7. Apr 2008 23:19

Re: [PHP] Parameter übergeben
 
Code:
$username = $_GET["username"];
$sqlabfrage = "SELECT * FROM user WHERE name='$username' ";
Aber dem Parameter darfst du nicht trauen, da musst du die EIngabe erst prüfen!

finalr 8. Apr 2008 00:28

Re: [PHP] Parameter übergeben
 
Noch eine kleine Anmerkung

Niemals den Parameter in einer SQL-Abfrage so einfügen:
Code:
$sql = "SELECT * FROM user WHERE name='".$_GET['username']."'";
Sonst besteht die Gefahr einer SQL-Injection, also immer den Parameter auf Gültigkeit überprüfen und nie den Parameter direkt in einer Abfrage einbauen!

Gruss Daniel

TillWe 8. Apr 2008 09:01

Re: [PHP] Parameter übergeben
 
mysql_db_query($db, $sqlabfrage);
Hier muß (glaub ich?) erst der Query, dann die DB Verbindung.
Zitat:

Kann mir da jemand sagen, wieso nicht der übergebene Parameter angezeigt wird? Was mache ich da denn falsch?
Du zeigst nur den Query an, Du willst abe das Ergebnis anzeigen:
http://de.php.net/function.mysql-result
http://de.php.net/manual/de/function...-fetch-row.php
http://de.php.net/manual/de/function...etch-array.php
http://de.php.net/manual/de/function...etch-assoc.php
http://de.php.net/manual/de/function...tch-object.php

Wie die Vorposter schon gesagt haben solltest Du die Benutzereingaben nicht ungefiltert verwenden:
http://de.php.net/manual/de/function...ape-string.php

Außerdem ist es besser SELECT username, ... anstatt SELECT * zu schreiben.
Vielleicht solltest Du noch überlegen ob der Username wirklich in die URL gehört (weiß ja nicht was Du machen willst) vl. wäre es besser ihn über POST oder so zu senden?!

mfg

alcaeus 8. Apr 2008 09:52

Re: [PHP] Parameter übergeben
 
Jetzt kommt aber der Spass....falls magic_quotes_gpc an ist, darf man nicht ohne weiteres mysql_real_escape_string drueberlaufen lassen. Nehmen wir an ein User gibt das ein:
Code:
');DROP DATABASE bar;--
dann kommt in $_GET folgendes an:
Code:
\');DROP DATABASE bar;--
Falls ich dann nochmal mysql_real_escape_string() drueberlaufen lass, dann hab ich
Code:
\\\');DROP DATABASE bar;--
oder
Code:
\\');DROP DATABASE bar;--
Und wie mans dreht und wendet, das sind auf alle Faelle zuviele \ ;)

Deshalb: auf alle Faelle erstmal stripslashes() drueberlaufen lassen, wenn magic_quotes_gpc an ist (don't you just love it?)

Greetz
alcaeus

Yheeky 8. Apr 2008 13:27

Re: [PHP] Parameter übergeben
 
Okay, super.
Folgende Zeile funktioniert:

Code:
$username = $_GET["username"];
Warum ist das aber unsicher? Ich möchte doch nur anhand von einem Usernamen Daten auslesen...

Matze 8. Apr 2008 13:41

Re: [PHP] Parameter übergeben
 
Man kann damit das Query manipulieren:

Wenn $username bsp. das hier ist: ' OR 1=1 OR name='
Dann wird deutlich zu viel ausgelesen. Natürlich kann man auch anderes damit anstellen.

Code:
$sqlabfrage = "SELECT * FROM user WHERE name='' OR 1=1 OR name='' ";

alcaeus 8. Apr 2008 15:02

Re: [PHP] Parameter übergeben
 
Zitat:

Zitat von Yheeky
Warum ist das aber unsicher? Ich möchte doch nur anhand von einem Usernamen Daten auslesen...

Siehe XKCD: "Exploits of a Mom"

Ueberleg dir einfach was passiert, wenn man so einen String ins Query reinhaut.

Greetz
alcaeus

Berlinermauer 8. Apr 2008 15:07

Re: [PHP] Parameter übergeben
 
ja dann könnte man dein Passwort leicht überschreiben oder überhaupt, natürlich kann man das auch nur wenn man weiß wie deine Tabbelen heißen aber wenn die daten aus phpbb kommen... '); CREATE Where(Name='NOOB' Password='angegebener Hash' Rang='1');

Syntax nicht ganz korrekt und Rang und so gibts nicht... ich will die SKs nicht dazu verleiten...^^ :angel2:

rollstuhlfahrer 8. Apr 2008 15:53

Re: [PHP] Parameter übergeben
 
HI,

noch eine kleine Anmerkung

Code:
http://meine-Homepage.de/script.php?username=Test
Die dazugehörige PHP-Variable heißt tatsächlich $username. Um aber an diese heranzukommen muss man in der PHP.Ini ne kleine Änderung vornehmen. Selbst nach einem kleinen Studium einer Beispiel PHP.ini hab ich zwar den Schalter nicht gefunden, bin mir aber 100%tig sicher, dass es ihn gibt.

rollstuhlfahrer


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz