anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mi 11 Jun, 2025 09:10

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: SQL-Injektion
BeitragVerfasst: Mi 27 Feb, 2008 19:28 
Offline
Profi
Profi
Benutzeravatar

Registriert: So 01 Apr, 2007 09:31
Beiträge: 155
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

_________________
I <3 Eliwood
_______________
$a=b;
$b=a;
$$a=a;
_______________
Faust: Was ist mit diesem Rätselwort gemeint?
- Faust I, Z. 1337


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Mi 27 Feb, 2008 19:31 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
$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. :>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Mi 27 Feb, 2008 20:22 
Offline
Profi
Profi
Benutzeravatar

Registriert: So 01 Apr, 2007 09:31
Beiträge: 155
8) Danke!!

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

_________________
I <3 Eliwood
_______________
$a=b;
$b=a;
$$a=a;
_______________
Faust: Was ist mit diesem Rätselwort gemeint?
- Faust I, Z. 1337


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Mi 27 Feb, 2008 20:27 
Offline
Profi
Profi
Benutzeravatar

Registriert: Sa 08 Jan, 2005 23:11
Beiträge: 161
Wohnort: Vechta
Geschlecht: Männlich
LoGD: Projekt nicht abgeschlossen..
Skype: Elebresk
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.

_________________
// If today was a perfect Day, there will be no need for tommorow... //


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Mi 27 Feb, 2008 20:45 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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' => '\'\'\'\''));')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Mi 27 Feb, 2008 21:09 
Offline
Profi
Profi
Benutzeravatar

Registriert: Sa 08 Jan, 2005 23:11
Beiträge: 161
Wohnort: Vechta
Geschlecht: Männlich
LoGD: Projekt nicht abgeschlossen..
Skype: Elebresk
Ja und denn gleich sql funktionen ausweiten zumindest die query,
das werdeich dann beim neuen Projekt auf jeden Fall mitbedenken.

_________________
// If today was a perfect Day, there will be no need for tommorow... //


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Do 28 Feb, 2008 14:48 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Ein praktisches Anweden in LoGD...ist das überhaupt möglich?
Das addnav() System sollte da doch eigentlich greifen, oder?

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Do 28 Feb, 2008 14:58 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Do 28 Feb, 2008 17:53 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Fr 29 Feb, 2008 01:52 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
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?

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Fr 29 Feb, 2008 12:19 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
In dem Du die Ausgabe suchst und diese ersetzt? (siehe regex)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Fr 29 Feb, 2008 14:47 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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". ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SQL-Injektion
BeitragVerfasst: Fr 29 Feb, 2008 16:52 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
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. :)

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum