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.
Würde mich sehr freuen, wenn mir jemand einen Rat/ Tipp/ Hinweis hätte!
Danke & Gruß,
Tim