Frage

perl -T

Haben Sie es verwenden? Hat es Ihnen helfen, Sicherheitslücken in Ihrer Perl-Skripte zu finden?

War es hilfreich?

Lösung

Mehr als das :) es stoppt Ihre Sicherheitsfragen, bevor sie eins werden. Es ist kein Sicherheits Königsweg natürlich ... wir haben es zu benutzen (vor ein paar Jahren, als ich in Perl-Projekten beteiligt) in jedem Skript, das von außen (dh jede Mod_perl app) ausgesetzt war und wir fanden es sehr nützlich und machte unsere Politik es. Es hat ein paar Kontrollen, und es ist praktisch .. (alles macht die Dinge automatisiert)

Perl Sicherheit - perlsec es empfiehlt dringend, auch:

  

Dieses Flag [Taint-Modus] für Serverprogramme und jedem Programmdurchlauf im Namen von jemand anderem, wie ein CGI-Skript nachdrücklich empfohlen. Sobald Taint-Modus eingeschaltet ist, ist es auf für den Rest des Skripts.

Andere Tipps

Die meisten auf jeden Fall!

$ echo '`rm -rf /`' | perl -Te 'eval while <>'
Insecure dependency in eval while running with -T switch at -e line 1, <> line 1.

Die „Sicher Programming Techniques“ Kapitel Mastering Perl fast vollständig zu beflecken Prüfung gewidmet und wie Sie verwenden sollen es.

Viele Leute werden Ihnen sagen, es schützt Sie, aber sie liegen auf subtile Weise darüber. Es ist ein Entwickler-Tool, das Ihnen einige (nur einige) Flecken in Ihrem Code hilft, wo man vorsichtig sein müssen. Es ist nicht alle Ihre Sicherheitsprobleme gehen zu lösen.

Ich denke, Taint-Modus würde am besten funktionieren, wenn neuer Code entwickelt wird, die jeder kennt.

Wenn Sie jemand anderem Code, schlecht geschrieben ist, und Sie führen Sie es in Taint-Modus - perl sterben, anstatt zu führen, was durch die tainting Regeln sind ‚unsicher‘ Operationen.

In Taint-Modus perl einige Löcher geflickt werden aber nicht alle. System ( „$ unfiltered_user_input“) werden sterben, aber Perl kann immer noch $ unfiltered_user_input Daten in eine Datei mit einem festen Namen schreiben (weil Druck verdorbene Daten ‚sicher‘ angesehen wird) und dann die Datei mit dem System ausführen (). Aber nichts kann alles überprüfen.

Es gibt einen Kompromiss gibt es auf Legacy-Anwendungen verwendet wird. Wenn Perl eine unsichere Operation findet verdorbene Daten wird es sterben - was bedeutet, dass jemand in gehen und entscheiden, was es bedeutet, die Daten untaint, was regExp benötigt werden, bevor die Anwendung wieder zuverlässig sein wird.

Einige Leute würden es vorziehen, unsicher, zuverlässige, kostengünstige (vorerst) zu - sicher, gebrochen, müssen die Entwickler zu finden. Nicht, dass das ist gut auf lange Sicht ... aber es ist nicht ungewöhnlich.

Ja, Taint-Modus ist nützlich für alle die oben genannten Gründe.

Ein Ort, dass Sie nicht verdorbene Daten betrachten können, ist, wenn sie mit einer Datenbank zu interagieren. Glücklicherweise hat DBI-Unterstützung für verdorbene Daten zu stoppen in der Datenbank bekommen, und es behandelt Daten aus Ihrer Datenbank kommen, wie so verdorben ist, dass man nichts unsicher damit machen kann. Sie haben speziell für diese zu den Optionen drehen; sie sind standardmäßig deaktiviert. Siehe die DBI docs mehr.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top