sebastian: ENV Query-string auf Perl-Code prüfen

Hallo zusammen,
damit skripte sicher werden ist es ja notwendig, das der Query String nicht einfach so benutzt wird, sondern das er überprüft wird.
Meine Frage ist also, wie überprüfe ich _sinvoll_, ob in dem Query String Perlcode benutzt wird.

  1. Hi,

    damit skripte sicher werden ist es ja notwendig, das der Query String nicht einfach so benutzt wird, sondern das er überprüft wird.

    kommt darauf an, was Du unter "benutzen" verstehst. Was hat das eigentlich mit %ENV zu tun?

    Meine Frage ist also, wie überprüfe ich _sinvoll_, ob in dem Query String Perlcode benutzt wird.

    Das hängt davon ab, was Du unter "benutzen" verstehst.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Unter benutzen verstehe ich, dass im Query z.B. Perlcode steht.
      z.B.

      Query; test=Open(IN,"/etc/shadow");@daten=<IN>;close(IN);

      dann hohle ich mir das objekt test und speichere es in $test ->

      use CGI;
      use strict;
      my $query = new CGI;
      my $test = $query->param('test');

      und wenn ich dann print $test mache, dann führe ich doch den oben genannten Code aus oder?

      1. Hi,

        Unter benutzen verstehe ich, dass im Query z.B. Perlcode steht.

        ich meinte eher, auf welche Weise Du den Parameter benutzt.

        und wenn ich dann print $test mache, dann führe ich doch den oben genannten Code aus oder?

        Nein, dann gibst Du die in $test befindlichen Zeichen aus.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Unter benutzen verstehe ich, dass im Query z.B. Perlcode steht.

          ich meinte eher, auf welche Weise Du den Parameter benutzt.

          Der wird als Text für eine E-mail benutzt

  2. Hi,

    damit skripte sicher werden ist es ja notwendig, das der Query String nicht einfach so benutzt wird, sondern das er überprüft wird.

    Ja, das ist sehr löblich, wird leider zu oft vergessen.

    Meine Frage ist also, wie überprüfe ich _sinvoll_, ob in dem Query String Perlcode benutzt wird.

    Das ist nicht sinnvoll. Es ist nämlcih verkehrt herum. Wenn Du alles nachprüfen willst, was _nicht_ drin vorkommen darf wirst Du nie fertig. Also prüfst Du ob etwas drin ist, was Du gebrauchen kannst und schmeißt den gesammten Rest weg. Bei Perl hast Du eh keine andere Chance, denn wie kannst Du etwas prüfen, was auf den ersten Blick durchaus nach einem kleinem Stück aus /dev/random ausseheh kann? ;-)
    Wenn es sich bei "Query" um einen SQL-Query handelt weißt Du ja z.B. welche Abfragen du eingebaut hast, wie die DBs und Tabellen heißen, die Spalten sich nennen, was drin ist usw.
    Daraus bastelst Du Dir dann einen Miniparser (Dafür reichen meist ein paar Regexe). Desto einfacher der Query, desto einfacher natürlich auch dieser Miniparser. Außerdem gibt es je nach Sprache auch das ein oder andere Mittel so eine Query als reinen String zu behandeln (Ist besonders bei PHP wichtig!)  Solche Mittel sind natürlich zur Anwendung zu bringen.
    Zwei Links dazu (ist zwar PHP, aber nicht viel sprachspezifisches mit drin):
    http://www.sklar.com/page/article/owasp-top-ten
    http://www.onlamp.com/pub/a/php/2003/03/20/php_security.html
    und einen zu SQL:
    http://de.wikipedia.org/wiki/SQL-Injection

    Es gibt aber noch jede Menge Material dazu, obige Drei sind nur zufällig die ersten, die Google in anderthalb minuten auswarf.

    so short

    Christoph Zurnieden