anpera.net
https://anpera.homeip.net/phpbb3/

SQL-Injektion
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=4362
Seite 1 von 1

Autor:  Song Sinen [ Mi 27 Feb, 2008 19:28 ]
Betreff des Beitrags:  SQL-Injektion

Hallo!

Mit Entsetzen wurde ich heute auf folgende Sicherheitslücke aufmerksam:
http://de.wikipedia.org/wiki/SQL-Injektion
http://de3.php.net/manual/de/security.d ... ection.php

Ein Freund kannte das Problem und hat mir folgende Anleitung empfohlen:
http://de3.php.net/mysql_real_escape_string

Leider habe ich hier ein kleines Verständnissproblem.
Ist mein Einbau korrekt? Oo

$this->bbcode_second_pass_code('', '
$text=$_POST[text];
db_query("UPDATE `user` SET `text` = '$text' WHERE `id` = '$userid';");')

wird zu

$this->bbcode_second_pass_code('', '
$text=$_POST[text];
db_query("UPDATE `user` SET `text` = '$text',
mysql_real_escape_string($text),
WHERE `id` = '$userid';");')


Lg,

Song Sinen

Autor:  Eliwood [ Mi 27 Feb, 2008 19:31 ]
Betreff des Beitrags:  Re: SQL-Injektion

$this->bbcode_second_pass_code('', '$text=$_POST[text];
db_query("UPDATE `user` SET `text` = '".mysql_real_escape_string($text)."' WHERE `id` = '".intval($userid)."';");')

Gegen SQL-Injections gibts aber besseren Schutz. Nun ja. Halt nicht in LoGD. :>

Autor:  Song Sinen [ Mi 27 Feb, 2008 20:22 ]
Betreff des Beitrags:  Re: SQL-Injektion

8) Danke!!

Hm, also is das hier wirklich die ultima ratio gegen sowas?

Autor:  Scartha [ Mi 27 Feb, 2008 20:27 ]
Betreff des Beitrags:  Re: SQL-Injektion

Eliwood hat geschrieben:
$this->bbcode_second_pass_code('', '$text=$_POST[text];
db_query("UPDATE `user` SET `text` = '".mysql_real_escape_string($text)."' WHERE `id` = '".intval($userid)."';");')

Gegen SQL-Injections gibts aber besseren Schutz. Nun ja. Halt nicht in LoGD. :>


Wohl wahr, um dass zu ändern müsste man von Kopf bis Fuß alles ändern,so wie ich des sehe.

Autor:  Eliwood [ Mi 27 Feb, 2008 20:45 ]
Betreff des Beitrags:  Re: SQL-Injektion

Scartha hat geschrieben:
Eliwood hat geschrieben:
$this->bbcode_second_pass_code('', '$text=$_POST[text];
db_query("UPDATE `user` SET `text` = '".mysql_real_escape_string($text)."' WHERE `id` = '".intval($userid)."';");')

Gegen SQL-Injections gibts aber besseren Schutz. Nun ja. Halt nicht in LoGD. :>


Wohl wahr, um dass zu ändern müsste man von Kopf bis Fuß alles ändern,so wie ich des sehe.


Man braucht nur n' anderen Wrapper. Dann gibts einfache Tricks dafür. Sowas dann:

$this->bbcode_second_pass_code('', '$res = db_squeryf('SELECT field FROM table WHERE value = :value, value2 = :blah', array(':value' =>'Blublah', ':blah' => '\'\'\'\''));')

Autor:  Scartha [ Mi 27 Feb, 2008 21:09 ]
Betreff des Beitrags:  Re: SQL-Injektion

Ja und denn gleich sql funktionen ausweiten zumindest die query,
das werdeich dann beim neuen Projekt auf jeden Fall mitbedenken.

Autor:  Drazaar [ Do 28 Feb, 2008 14:48 ]
Betreff des Beitrags:  Re: SQL-Injektion

Ein praktisches Anweden in LoGD...ist das überhaupt möglich?
Das addnav() System sollte da doch eigentlich greifen, oder?

Autor:  Kevz [ Do 28 Feb, 2008 14:58 ]
Betreff des Beitrags:  Re: SQL-Injektion

Wieso sollte es nicht möglich sein?
Letztendlich wird der SQL-Befehl ja von der Funktion "db_query" verarbeitet und nicht von der Funktion "addnav". Diese ist ja nur für die Verarbeitung der Navigation zuständig.

Autor:  Eliwood [ Do 28 Feb, 2008 17:53 ]
Betreff des Beitrags:  Re: SQL-Injektion

Drazaar hat geschrieben:
Ein praktisches Anweden in LoGD...ist das überhaupt möglich?
Das addnav() System sollte da doch eigentlich greifen, oder?


Das hat, wie Kevz schon sagte, mit addnav() nichts zu tun. Das einzige, was hier (bei LoGD) mitspielt, ist die dbwrapper.php - die escaped alle Eingaben. Wenn man also selbst nicht strippt, dann passiert nichts.

Autor:  Drazaar [ Fr 29 Feb, 2008 01:52 ]
Betreff des Beitrags:  Re: SQL-Injektion

Ich meinte damit, wo sollte man ansetzen? Ich hab mich dabei auf das Beispiel von Wikipedia bezogen.
Wie willst du den "Aufruf" verändern, wenn er im Script festgelegt ist?

Autor:  Kevz [ Fr 29 Feb, 2008 12:19 ]
Betreff des Beitrags:  Re: SQL-Injektion

In dem Du die Ausgabe suchst und diese ersetzt? (siehe regex)

Autor:  Eliwood [ Fr 29 Feb, 2008 14:47 ]
Betreff des Beitrags:  Re: SQL-Injektion

Drazaar hat geschrieben:
Ich meinte damit, wo sollte man ansetzen? Ich hab mich dabei auf das Beispiel von Wikipedia bezogen.
Wie willst du den "Aufruf" verändern, wenn er im Script festgelegt ist?


Durch schlecht programmierte Queries. Über POST, COOKIES, und GET-Variablen. GET ist durch addnav normalerweise geschützt (Nicht aber in einem Popup z.B.!). COOKIE und POST werden maskiert in der dbwrapper.php. Und mit register_globals = on kann noch mehr schlimmes passieren... ;) Zum Beispiel (schlecht programmiert, register_globals = on):

$this->bbcode_second_pass_code('', 'foreach($array as $val):
$string .= "INSERT INTO database.table (field VALUES ($val)";
endforeach;

mysql_query($string);')

Aufruf der Seite: test.php, ein COOKIE mit namen string hat den Wert "DROP DATABASE database". ;)

Autor:  Drazaar [ Fr 29 Feb, 2008 16:52 ]
Betreff des Beitrags:  Re: SQL-Injektion

Okay gut, ich hab in meiner Engstirnigkeit nur den Weg über die $_GET Variable nachgedacht. Deshalb die Frage wegen addnav()

Danke fürs Erklären. :)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/