Auch wenn register_globals aus wäre, könnte ein Hacker es schaffen - ohne ein Prüfung auf die Richtigkeit der Werte im SQL-Statement ist es doch ein Kinderspiel. Unabhängig davon ob register_globals an oder aus ist..
Original geschrieben von reallife Das ist nicht ganz richtig - wenn die news_ID vom typ integer ist, sind die apostrophe nicht notwendig.
@Thread öffner: Ich würde Dir ans Herz legen, die Werte, mit denen du ein SQL-Statement zusammenbaust, vorher auf Richtigkeit zu prüfen. Sollte die ID über die URL mitgeführt werden, wäre es für einen Angreifer ein Kinderspiel sich in dein Code rein zu hacken.
Stichwort: SQL-Injection.
(1) der Schutz geht mit mittels mysql_real_escape_string.
also $news_SQL="SELECT ... WHERE news_id='".mysql_real_escape_string($news_id)."'";
edit ich befürchte, in diesem Fall sind auch die '..' um die Zahl nötig, sonst geht wieder ein Loch auf.
(2) register_globals könnte die Ursache sein, dh bisher war im php.ini register_globals=on, jetzt =off, zb Sicherheitsmassnahme des providers, oder durch providerwechsel.
(3) $news_id kann auch durch sonst einen Programmierfehler irgendwo zerschossen sein.
Das musst du mir nicht sagen, ich weiss sehr wohl wie ich SQL-Statements sicher erstellen kann. Das die ID auch im vorher gehenden Programmablauf zerstört worden sein kann, ist denkbar. In seinem Codeauszug war keine Prüfung auf Richtigkeit der Werte, ausserdem ist es ja auch nur eine Vermutung, dass die ID über die URL mitgeführt wird.
Comment