Seite 1 von 1

Gefährliche Funktionen in Python?

Verfasst: Donnerstag 24. Juni 2010, 10:24
von colo
Hallo liebes Forum,
ich programmiere seit ein paar Monaten Python und habe für ein Grafikprogramm ein mittelkompliziertes Plugin in Python geschrieben, dass ich auch gerne weitergeben möchte.

Daher wäre ich mir gern so sicher wie möglich, dass dadurch kein Schaden bei Anwendern entstehen kann. Vielleicht könnt Ihr mir dazu einen Rat geben.

Was ich z.b. nicht verwende ist:

delete
remove,
unlink,
rmdir
rmtree
shutils
walk

Fallen Euch noch andere gefährliche Funktionen ein, mit denen man viel kaputt machen kann?
Da wäre ich um jeden Tipp sehr dankbar.

Vielen Dank und viele Grüße,
colo

Re: Gefährliche Funktionen in Python?

Verfasst: Donnerstag 24. Juni 2010, 11:48
von CM
Was ist denn an diesen Funktionen / Modulen / Statements gefährlich? Die Auswirkung kann u. U. bei fehlerhafter Programmierung sehr ärgerlich sein. Aber gefährlich? Wenn man im Batch Dateien umbenennen will ist shutils sehr nützlich, nicht gefährlich - nur um mal ein Beispiel zu nennen. Selbst 'eval' und 'exec' sind nicht gefährlich, sofern man weiß wo man sie einsetzten darf und wo nicht.

Und wenn Du selber ein Programm verschiffst, müßte ja schon jemand das Programm aufbohren, den Code bewußt manipulieren und dann weiterverschiffen, bevor Deine User zu Schaden kommen. Das aber geht auch ohne, daß Du gefährlichen Code schreibst. Hast Du Feinde? ;-)

edit: Am besten vor Verteilen des Programms ausgiebig testen.

PS Willkommen im Forum!

Re: Gefährliche Funktionen in Python?

Verfasst: Donnerstag 24. Juni 2010, 14:37
von mkesper
Führst du Subprozesse aus? Führst du diese richtig aus? Da lassen sich glaube ich relativ einfach gefährliche Sachen unterjubeln. Und vertraue niemals dem Userinput. ;)

Re: Gefährliche Funktionen in Python?

Verfasst: Donnerstag 24. Juni 2010, 14:54
von colo
Subprozesse starte ich glaube ich nicht :-).
Zumindest habe ich den string "exec" nirgends im Source verwendet.

Natürlich ist es richtig, der Begriff gefährlich ist relativ.

Das Programm sollte eigentlich nur vom filesystem lesen. Ich habe nur ein open(infile), laut Doku bedeutet das lesenden Zugriff.
Dementsprechend ist "gefährlich" alles, was Dateien modifiziert bzw. löschen könnte. :). Und als ich entdeckt habe das es rmtree gibt dachte ich ohje vielleicht gibt es noch mehr solche Sachen.

Jeder Bug ist ärgerlich, klar, aber manche bugs sind schlimmer als andere. Wenn das Ding irgendwas falsch rechnet ist das unkritisch.

Eval ist auch noch eine gute Idee, habe ich glaube ich aber auch nicht verbaut. Danke für den Tipp.

Re: Gefährliche Funktionen in Python?

Verfasst: Donnerstag 24. Juni 2010, 15:10
von cofi
colo hat geschrieben:Subprozesse starte ich glaube ich nicht :-).
Zumindest habe ich den string "exec" nirgends im Source verwendet.
`exec` startet keine Subprozesse `os.Popen` und `subprocess.Popen` tun das unter anderem.

Re: Gefährliche Funktionen in Python?

Verfasst: Freitag 25. Juni 2010, 11:10
von colo
Auch nicht verwendet :).

Das lässt doch ein wenig Hoffnung.
Auch "system" habe ich ausgespart!

Re: Gefährliche Funktionen in Python?

Verfasst: Freitag 25. Juni 2010, 17:13
von DaMutz
ich weiss ja nicht was das werden soll. Aber "gefährlich" können noch viele andere Funktionen sein:
  • while / for: Endlosschlaufe
  • open: du kannst riesige Datein auf der Betriebssystem Partition erzeugen und so das Betriebssystem stören.
  • open: du kanst System Dateien überschreiben

Re: Gefährliche Funktionen in Python?

Verfasst: Freitag 25. Juni 2010, 20:24
von Leonidas
Gefählich sind auch Strings und Integer, etwa "a" und 10^32 sowie multiplikation, damit kann man große Strings anlegen die den ganzen Speicher füllen. Hoffenlich nutzt du keine Strings und Integer.

Re: Gefährliche Funktionen in Python?

Verfasst: Freitag 25. Juni 2010, 21:08
von /me
DaMutz hat geschrieben:
  • while / for: Endlosschlaufe
Da das immer wieder mal jemand falsch schreibt, sich aber möglichst gar nicht erst verkehrt einprägen soll, fühle ich mich bemüßigt hier korrigierend einzugreifen. Endlosschleife heißt das richtig.

Re: Gefährliche Funktionen in Python?

Verfasst: Freitag 25. Juni 2010, 23:27
von Darii
/me hat geschrieben:
DaMutz hat geschrieben:Endlosschleife heißt das richtig.
Wobei Schlaufe eigentlich richtiger wäre, Schleifen kann man im Gegensatz zu Schlaufen ja recht gut wieder aufziehen. :)