Regex - gefährliche drops in sql finden
Geizhals » Forum » Programmierung » Regex - gefährliche drops in sql finden (26 Beiträge, 619 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Regex - gefährliche drops in sql finden
29.12.2010, 15:13:04
Hallo!



Also ich hab mich jetzt sehr lange herumgespielt, finde aber leider keine Lösung für mein Problem.

Ich möchte alle potenziell gefährlichen DROPs in den folgenden Test-String finden. (Schon klar das die SQL-Statements nicht korrekt sind -> just for testing).



Mein Ansatz war es alle DROPs zu finden die:

  • nicht von Klammern umschlossen sind

  • nicht von Anführungszeichen umschlossen sind


Hierbei muss es egal sein wieviele Leerzeichen und ob überhaupt vorher bzw. danach vorhanden sind.



Da ich noch nicht viele mit regular expressions gemacht habe bitte ich um Verzeihung wenn es möglicherweise sehr einfach zu lösen ist. Ich habe versucht es mit http://gskinner.com/RegExr/ zu testen aber leider interpretiert PHP es etwas anders als dieser Editor.

Mein derzeitiger Ansatz ist:


@\bDROP(((\s*)??)|(/\W+\w+)??)[^\"\'\)\/\.,]\b@im


Aber das will nicht so recht klappen :(



INSERT INTO xyz (name) VALUES(' DROP ');
INSERT INTO xyz (DROP.name) VALUES (' DROP ');
INSERT INTO xyz (name) VALUES ("DROP ");
INSERT INTO xyz ( DROP ) VALUES("DROP ");
INSERT INTO xyz ( DROP,name.field ) VALUES ("INSERT",INSERT );

SELECT * FROM xy WHERE a = 'c';
SELECT * FROM xy WHERE a = "c";
SELECT c,d,e FROM xy WHERE a = 'c';
SELECT a,b,(SELECT q FROM xy WHERE a = 'c') FROM xy WHERE a = 'c';



DROP TABLE `def`;
'DROP TABLE 'def';
DROP TABLE "def";
DROP TABLE def;
DROP TABLE IF EXISTS `B`,`C`,`A`;
 DROP TABLE IF EXISTS B,C,A,DROP                 ;


Ich erhalte folgendes Resultat:

Array
(
    [0] => Array
        (
            [0] => DROP 
            [1] => DROP 
            [2] => DROP 
            [3] => DROP 
            [4] => DROP 
            [5] => DROP 
            [6] => DROP 
            [7] => DROP/**/TABLE
        )

    [1] => Array
        (
            [0] => 
            [1] => 
            [2] => 
            [3] => 
            [4] => 
            [5] => 
            [6] => 
            [7] => /**/TABL
        )

    [2] => Array
        (
            [0] => 
            [1] => 
            [2] => 
            [3] => 
            [4] => 
            [5] => 
            [6] => 
            [7] => 
        )

    [3] => Array
        (
            [0] => 
            [1] => 
            [2] => 
            [3] => 
            [4] => 
            [5] => 
            [6] => 
            [7] => 
        )

    [4] => Array
        (
            [0] => 
            [1] => 
            [2] => 
            [3] => 
            [4] => 
            [5] => 
            [6] => 
            [7] => /**/TABL
        )

)


Danke!



29.12.2010, 15:26 Uhr - Editiert von n256, alte Version: hier
Diskussion beendet PM Übersicht Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung