PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   sql injection (http://www.selfphp.de/forum/showthread.php?t=26192)

gutu 30.01.2023 15:58:49

sql injection
 
Hallo Expert*innen
ich lese in meiner index.php eine Tabelle sprueche mit folgendem Code:
PHP-Code:

$rec mt_rand(1,$anzahlSpr);
$sql "select * from sprueche_".$sprache." where id=?";
$_SESSION["sql"]=$sql.$rec;
$stmt=$pdo->prepare($sql);
$stmt->execute(array($rec)); 

Dabei kommt es zu keiner Eingabe eines users. Ich sende mir alle aufgetretenen Fehler per mail und erhalte seit einigen Tagen Unmengen von Fehlern mit Misstaltungen des SQL Befehls. Wie z.B.
select * from sprueche_en/A=0 where id=?

Ich bin 72 Jahre alt und habe einige Erfahrungen mit anderen Sprachen. Da muss wohl jemand auf meinen Server zugreifen können, denn der Code ist ja für einen Client nicht sichtbar. Das ganze ist mir unheimlich und macht mir Sorgen.
Was kann da passieren und wie kann ich das verhindern?
Besten Dank für Rat.
Grüße aus Salzburg

vt1816 31.01.2023 07:42:41

AW: sql injection
 
Guten Morgen Uwe,

wo kommt die Variable $sprache her?

Ansonsten gilt das gleiche wie hier schon mal geschrieben.

PS: Benutze nie "SELECT *"! Schreibe immer die Feldnamen rein, die Du wirklich (nur) benötigst.

gutu 31.01.2023 14:42:43

AW: sql injection
 
Danke für die rasche Antwort. Die Variable $sprache kommt aus einer Session und wird durch den click auf eine Fahne ausgelöst.
Werde die Ratschläge berücksichtigen

vt1816 31.01.2023 14:59:32

AW: sql injection
 
Zitat:

Zitat von gutu (Beitrag 149876)
Die Variable $sprache kommt aus einer Session und wird durch den click auf eine Fahne ausgelöst.

Und dieser Click wird mit $_GET an Dein Script übergeben? Oder wie übernimmst Du den Wert des Clicks?

Vermutlich mittels http://www.example.com/index.php?sprache=en.
Dies machen sich die bösen Buben zu Nutze und starten ihre Angriffe.
Prüfe - wie bereits geschrieben - die Werte auf Gültigkeit in $_GET bevor Du sie in $_SESSION übernimmst.

Schaue Dir in diesem Zusammenhang auch die Funktion htmlspecialchars an


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:41:00 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.