Rolf B: Über 1800 Aufrufe meiner Webseite Hacker-Versuch?

Beitrag lesen

Hallo dedlfix,

nein, das letzte ' in der FM dürfte aus seinem ursprünglichen SQL stammen.

Sowas in dieser Art:

$id = addslashes($_GET['ID']);
$sql = "SELECT foo FROM bar WHERE id='$id'";
//                                       ^ dieses hier

Beide Funktionen arbeiten nur dann wirksam, wenn man im Stringkontext ist.

Dass tabelle_id ein int ist und kein char/varchar, wäre anzunehmen. Aber sicher wissen wir das nicht. MYSQL hat sich ja das Type Juggling bei PHP abgeguckt und errät nach bestem Wissen und Gefühl die User-Absichten. Gelegentlicher Zehenverlust bei Schüssen in den Fuß nicht ausgeschlossen. Dann doch lieber ein ehrlicher Type Mismatch Error.

Wenn's eine INT Column ist, hast Du recht. Wenn man einen Integerwert erwartet, prüft man nicht auf einen String. Dann nimmt man intval() und schaltet eventuell eine /\d+/ Regex vor.

Empfohlen wird manchmal auch die filter_input-Funktion mit FILTER_VALIDATE_INT. Ich selbst mag die filter-Funktionen nicht so, weil die die Seuche mit führenden Nullen und Oktalzahlen haben.

Rolf

--
sumpsi - posui - obstruxi