![]() |
[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:
Ich habe in der PHP Datei folgenden Code:
http://meine-Homepage.de/script.php?username=Test
Code:
In der Server.php stehen die Serverdaten.
<?php
include('server.php'); $sqlabfrage = "SELECT * FROM user WHERE name='$username' "; $res = mysql_db_query($db, $sqlabfrage); $num = mysql_affected_rows(); echo $sqlabfrage; ?> Zum Testen habe ich mir die "sqlabfrage" also echo anzeigen lassen, doch egal, welchen Usernamen ich eingebe, es kommt immer folgende Ausgabe:
Code:
Kann mir da jemand sagen, wieso nicht der übergebene Parameter angezeigt wird? Was mache ich da denn falsch?
SELECT * FROM user WHERE name ''
|
Re: [PHP] Parameter übergeben
Code:
Aber dem Parameter darfst du nicht trauen, da musst du die EIngabe erst prüfen!
$username = $_GET["username"];
$sqlabfrage = "SELECT * FROM user WHERE name='$username' "; |
Re: [PHP] Parameter übergeben
Noch eine kleine Anmerkung
Niemals den Parameter in einer SQL-Abfrage so einfügen:
Code:
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!
$sql = "SELECT * FROM user WHERE name='".$_GET['username']."'";
Gruss Daniel |
Re: [PHP] Parameter übergeben
mysql_db_query($db, $sqlabfrage);
Hier muß (glaub ich?) erst der Query, dann die DB Verbindung. Zitat:
![]() ![]() ![]() ![]() ![]() Wie die Vorposter schon gesagt haben solltest Du die Benutzereingaben nicht ungefiltert verwenden: ![]() 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 |
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:
dann kommt in $_GET folgendes an:
');DROP DATABASE bar;--
Code:
Falls ich dann nochmal mysql_real_escape_string() drueberlaufen lass, dann hab ich
\');DROP DATABASE bar;--
Code:
oder
\\\');DROP DATABASE bar;--
Code:
Und wie mans dreht und wendet, das sind auf alle Faelle zuviele \ ;)
\\');DROP DATABASE bar;--
Deshalb: auf alle Faelle erstmal stripslashes() drueberlaufen lassen, wenn magic_quotes_gpc an ist (don't you just love it?) Greetz alcaeus |
Re: [PHP] Parameter übergeben
Okay, super.
Folgende Zeile funktioniert:
Code:
Warum ist das aber unsicher? Ich möchte doch nur anhand von einem Usernamen Daten auslesen...
$username = $_GET["username"];
|
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='' ";
|
Re: [PHP] Parameter übergeben
Zitat:
![]() Ueberleg dir einfach was passiert, wenn man so einen String ins Query reinhaut. Greetz alcaeus |
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: |
Re: [PHP] Parameter übergeben
HI,
noch eine kleine Anmerkung
Code:
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.
http://meine-Homepage.de/script.php?username=Test
rollstuhlfahrer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz