Ergebnis 1 bis 3 von 3

Thema: SQL Injection-Gefahr bei pl/python?

  1. #1
    Tim
    Tim ist offline Neuer Benutzer
    Registriert seit
    18.04.2007
    Beiträge
    11

    Standard SQL Injection-Gefahr bei pl/python?

    Hallo miteinander!

    Ich wollte mal nachfragen, ob mir jemand so spontan sagen kann, wie groß die Gefahr einer SQL Injection ist, wenn ich mittels
    plpy.execute Statements an die Datenbank abschicke.
    Beispiel:
    pl/python-Prozedur bekommt einen Integer als Argument übergeben.
    Aus diesem Argument wird dann ein Statment
    Code:
    res = plpy.execute("SELECT blubb FROM bla WHERE myint = " + str(args[0]))
    aufgebaut.
    Oder natürlich auch mit einem String als Agrument möglich:
    Code:
    res = plpy.execute("SELECT blubb FROM bla WHERE myvarchar = '" + args[0] + "'")
    Ich habs natürlich mal selber versucht und als Agrument etwas in der Art
    Code:
    '; DROP TABLE xyz;
    übergeben, das hat schon mal nicht geklappt.

    Jetzt stellt sich mir natürlich die Frage ob ich einfach zu wenig über SQL Injections weiß (sehr wahrscheinlich!) oder ob das plpy.execute doch sehr "stabil" dagegen ist. Ich kenne es halt von php + mysql her, wo man da verdammt aufpassen muss und am besten nur mit sprinf aufbereitete Strings an die Datenbank gibt und mit addslashes alles schon escaped.

    Im übrigens will ich keine schlimmen Dinge mit SQL Injections machen, sondern ich will verhindern dass das bei meinem Code jemand anderes macht.

    Würde mich sehr freuen, wenn mir jemand einen Rat/ Tipp/ Hinweis hätte!

    Danke & Gruß,
    Tim

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    [QUOTE=Tim;6961]

    Ich habs natürlich mal selber versucht und als Agrument etwas in der Art
    Code:
    '; DROP TABLE xyz;
    übergeben, das hat schon mal nicht geklappt.

    An dieser Stelle schlägt bereits das SELECT fehl und dann wohl auch das DROP. Aber nur, weil '' kein INTEGER ist.

    Jetzt stellt sich mir natürlich die Frage ob ich einfach zu wenig über SQL Injections weiß (sehr wahrscheinlich!) oder ob das plpy.execute doch sehr "stabil" dagegen ist. Ich kenne es halt von php + mysql her, wo man da verdammt aufpassen muss und am besten nur mit sprinf aufbereitete Strings an die Datenbank gibt und mit addslashes alles schon escaped.
    Du könntest an solchen Stellen, wo Nutzereingaben kommen, mit PREPARED STATEMENTS arbeiten.
    In meiner Del.Icio.Us - Linksammlung stehen ein paar Links zum Thema.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Tim
    Tim ist offline Neuer Benutzer
    Registriert seit
    18.04.2007
    Beiträge
    11

    Standard

    Hallo und danke für die Antwort!

    Das Injection-Beispiel war eigentlich für die Varchar-Variante gedacht, wo man irgendwie den angefangen String beenden muss (escaptes Quote-Zeichen) und danach dann ein weiters Statement unterbringen kann.

    Aber prinzipiell ist es schon möglich, da eine SQL Injection zu machen?

    Dann werde ich mich mal mit Prepared Statements beschäftigen.
    Danke für den Hinweis!

    Gruß, Tim

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum