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

res = plpy.execute("SELECT blubb FROM bla WHERE myint = " + str(args[0]))

aufgebaut.
Oder natürlich auch mit einem String als Agrument möglich:

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

'; 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. :p

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

Danke & Gruß,
Tim

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

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! :slight_smile:

Gruß, Tim