Gefährliche Funktionen in Python?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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!
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

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. ;)
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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
colo

Auch nicht verwendet :).

Das lässt doch ein wenig Hoffnung.
Auch "system" habe ich ausgespart!
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

/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. :)
Antworten