Autor Beitrag
Alice
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Di 29.07.08 12:56 
hi,

ich will mittels einem kleinen script eine flatfile db mit sql-statments versorgen.
diese werden aus einem delphiprog. heraus erstellt.

auf webserverseite soll dieses script die kommenden sql-sets abarbeiten:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<?php

$db = new Database("test");
$sqltxt = $_GET["sqltxt"];
$rs = $db->executeQuery(SELECT."$sqltxt");
.
..
?>


es kommt keine mysql db zu einsatz.
deshalb kann auch kein mysql_real_escape_string() und co.
verw. werden. man müsste also mit php mitteln hier ran gehen.

ich dachte zu ersteinmal vielleicht so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
      
            $sqltxt = $_GET["sqltxt"];
            $sqltxt = ereg_replace(';', '', $sqltxt);
            $sqltxt = ereg_replace('>', '', $sqltxt);
            $sqltxt = ereg_replace('<', '', $sqltxt);
            $sqltxt = stripslashes($sqltxt);
            $rs = $db->executeQuery(SELECT."$sqltxt");


gibt es noch weitere mögl. eine mögl. sql injection
zu verhindern / erschweren ?
mir ist klar das man das nicht zu 100% wasserdicht machen kann,
aber vielleicht sind ja 99% drinn... :-)

cu
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Mo 11.08.08 12:29 
Problemantisch ist das du einen großen Teil des SQL-Statements per Parameter bekommst. Damit ist es nicht möglich einfach die SQL-Schlüsselwörter (Insert, Select, ...) zu filtern.

Kann man das nicht irgendwie noch erreichen?

_________________
I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 11.08.08 15:55 
Sicherheitstechnisch ist solch ein Herangehen tödlich.

Gestalte dein Website-Interface für das Script so, dass die Datenbank-Abfrage auf jeden Fall von PHP gebaut wird. In dem Fall kannst Du nämlich Prepared Statements verwenden und brauchst dich nicht wirklich um das Escaping der Daten kümmern (Abgesehen von Sanity Checks, die aber Standard sein sollten!).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.