Gegenüber PHP ist Python in der Vergangenheit bei allen Problemen sehr gut weggekommen. Seit Jahren gibt es nur drei bekannte Sicherheitslücken in Python und seiner Standard-Library:
Argumente für ein Updaten von 2.2 auf minimum 2.3 werden gesammelt unter:
Tipps
Um Code-Injections zu vermeiden sollte man eval() und exec nicht auf eingegebene bzw. eingelesene Daten anwenden.
Zum Vermeiden von SQL-Injections sollte man zuerst die Escape-Funktion des Datenbank-Moduls verwenden oder auf SQLAlchemy zurückgreifen.
input
Generell sollte auf input() verzichten und statt dessen raw_input() benutzen. input() ist im Prinzip nichts anderes als eval(raw_input()) und deswegen nicht ungefährlicher als eval selbst. Siehe: raw input vs. input
os.system
Anstatt os.system sollte immer das subprocess Modul verwendet werden, weil sich dieses um das Absichern der Parameter kümmert.
Mail Header Injections
Wenn Usereingaben in Mailheader eingebaut werden sollte unbedingt überprüft werden, dass die Eingabe nur aus einer Zeile besteht. Sonst könnte ein Angreifer das Mailskript für den Spam Versand missbrauchen. Siehe dazu auch den Eintrag in der Wikipedia.
Cross-Site Scripting
Für Webanwendungen gilt: alle Usereingaben durch cgi.escape() / xml.sax.saxutils.escape jagen bevor diese auf einer HTML Seite angezeigt werden. Andernfalls können die Folgen verheerend sein. Siehe dazu auch den Eintrag in der Wikipedia.
Links
- Links im Forum: