Tom: Injection verhindern, HTML codieren

Hello,

wo kann ich denn wohl am schnellsten fündig werden, wie man in PERL und MySQL Injections abfängt, und wie man die Ausgabe HTML-gerecht codiert?

Am liebsten wäre mir eine Gegenüberstellung der Methoden / Funktionen von PERL und PHP, soweit möglich.

Gibt es sowas?

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau

  1. Hell-O!

    wo kann ich denn wohl am schnellsten fündig werden, wie man in PERL und MySQL Injections abfängt, und wie man die Ausgabe HTML-gerecht codiert?

    Zur Vermeidung von SQL-Injections stellt dir das Standardmodul DBI eine Methode "quote" zur Verfügung (siehe Database Handle Methods: quote), die m.E. mit mysql_real_escape_string() in PHP verglichen werden könnte.

    Weiterhin kannst du Platzhalter verwenden (siehe Placeholders and Bind Values). Wenn du es so machst, darfst du allerdings DBI::quote nicht verwenden, da hier automagisch und kontextabhängig gequoted wird. Soweit ich mich erinnere, wird dieses Verfahren als der Königsweg angesehen, um in Perl Injections zu verhindern.

    Zur Frage der allgemeinen Sicherheit findest du so einiges in perlsec.

    Tja, und was die Ausgabe als HTML betrifft, kommt es auf die Daten an, wie sie aus der DB kommen (mit/ohne Tags, mit/ohne Entities usw. usf.). Da müsstest du vielleicht mal präziser fragen.

    Am liebsten wäre mir eine Gegenüberstellung der Methoden / Funktionen von PERL und PHP, soweit möglich.

    Reicht dir der Eintrag SQL Injections aus der(?) englischen Wikipedia aus?

    Siechfred

    1. Hello Siechfred,

      [...] alles brauchbar, danke!

      Tja, und was die Ausgabe als HTML betrifft, kommt es auf die Daten an, wie sie aus der DB kommen (mit/ohne Tags, mit/ohne Entities usw. usf.). Da müsstest du vielleicht mal präziser fragen.

      In der DB stehen Rohdaten. Ich muss eben htmlentities($string,ENT_QUOTES) und nl2br() auf PERLesch haben :-)

      Das ganze Projekt wird in PHP "etwas größer" gebaut. Der Kunde hat aber schon eine minimalistische Lösung in PERL, die keinerlei Sicherheit bietet.

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

      1. htmlentities($string,ENT_QUOTES)

        Das Perl-Modul heißt fast genauso: HTML::Entities. Sollte es bei der Perl-Installation nicht vorhanden sein, müsstest du es entweder nachinstallieren oder mitliefern, was nicht so schwer sein dürfte, da es sich um reinen Perl-Code handelt. Infos zum Thema Module gibt's natürlich bei SELFHTML :-)

        nl2br()

        Das gibt's so nicht (mir ist jedenfalls nichts bekannt). Aber dafür tut's ein Einzeiler (hier mal die XHTML-Variante):

        $text =~ s~\015\012|\015|\012~<br />~g;

        (siehe dazu Plattformübergreifendes Handling von Zeilenumbrüchen)

        Siechfred

        1. Hello,

          es hat soweit alles geklappt und außerdem habe ich dabei gelernt, dass quote() bei PERL die kleinen Häkchen gleich mit besorgt. Das ist recht praktisch und ich werde mir für PHP auch eine solche Funktion fertig machen... sozusagen

          mysql_quote()

          ...

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

  2. Moin!

    wo kann ich denn wohl am schnellsten fündig werden, wie man in PERL und MySQL Injections abfängt, und wie man die Ausgabe HTML-gerecht codiert?

    Was für Injektionen willst du denn in MySQL abfangen oder meinst du in Perl MySQL-Injektionen abfangen? Soweit ich weiß, bietet dir das DBI-Paket eine gute Schnittstelle zum Datenbank-Zugriff. Allerdings heißen die Methoden teilweise doch recht anders als die von PHPs dbx-Erweiterung (z.B. quote vs. dbx_escape_string).

    Für die HTML-Ausgabe in Perl möchtest du wahrscheinlich auf die Dienste des http://de.selfhtml.org/perl/module/cgi.htm@title=CGI-Paketes (ausführliche Dokumentation) zurückgreifen.

    Am liebsten wäre mir eine Gegenüberstellung der Methoden/Funktionen von PERL und PHP, soweit möglich.

    Gibt es sowas?

    Gute Frage, von mir allerdings leider nicht, weil ich mit Perl bislang noch keine CGI-Erfahrungen gesammelt habe.

    Viele Grüße,
    Robert