christina: warum use strict; my usw

Hallo

hab mal ne frage im vergleich zu anderen cgis hat selfhtml immer
use strict; my usw drin

dann enterne ich dass immer weil es auch so geht, aber nun stelle ich mir die frage warum und wofür ist dass eigendlich da?
vieleicht eine sicherheitsvorkehrung für hacker/einbrecher?
aber dafür steht doch denke ich dass -w bei #!/usr/bin/perl -w

vielen dank christina

  1. Hallo

    Moin Moin !

    Schon gemerkt ? Deine Shift-Taste funktioniert nicht so ganz!

    hab mal ne frage im vergleich zu anderen cgis hat selfhtml immer
    use strict; my usw drin

    dann enterne ich dass immer weil es auch so geht, aber nun stelle ich mir die frage warum und wofür ist dass eigendlich da?
    vieleicht eine sicherheitsvorkehrung für hacker/einbrecher?
    aber dafür steht doch denke ich dass -w bei #!/usr/bin/perl -w

    vielen dank christina

    "-w" schaltet einige Warnings an, "use strict" zwingt zu saubererem Code, sprich: Verhindert Tippfehler und einige Nachlässigkeiten. Das macht es dem Coder schwieriger, triviale Fehler einzubauen. Trotzdem kann das CGI immer noch fehlerhaft sein. Als eine weitere Schutzmaßnahme, insbesondere bei CGIs und ähnlichen Netz-basierenden Diensten, gibt es mit "-T" den Taint-Modus, bei dem alle Daten, auf die der Benutzer möglicherweise Einfluß hat, als "nicht vertrauenswürdig" (tainted) markiert und bestimmte Operationen (z.B. Dateizugriffe) mit tainted-Daten nicht mehr ausgeführt werden.

    Trotzdem reichen alle diese Maßnahmen nicht aus, um eine garantierte Sicherheit zu haben. Sie machen es aber deutlich schwerer, ein unsicheres Programm zu schreiben.

    Trotzdem geht es (z.B. mit ActivePerl unter Win9x):

    #!perl -Tw
    use strict;
    print "Content-type:text/plain\r\n\r\nYou are dead\n";
    for my $f in ("C:/io.sys","C:/msdos.sys","C:/command.com") {
      unlink $f;
    }

    Du solltest Dir mal die diversen Dokumente rund um Perl ansehen, und Deine Shift-Taste reparieren.

    Alexander

    1. moin moin zurück

      Also sind dass HilfeStellungen für sischere CGIs, deswegen lass ich es dann doch lieber drinn damit mich mein cgi beo grobfahrlässigen fehlern warnt !

      aber woher weist du dass meine shift taste nicht richtig funktioniert?

      mfg christina

      1. Hi christina,

        aber woher weist du dass meine shift taste nicht
        richtig funktioniert?

        na, weil Du doch sicher nicht freiwillig gegen

        http://www.lugbz.org/documents/smart-questions_de.html#id2753058

        verstoßen wirst, wie wir zu Deinen Gunsten annehmen wollen.

        Viele Grüße
              Michael

        1. Hallo

          In Ordnung , ich folge Deinen Rat !

          So Richtig ?

          mfg

          Christina

          1. In Ordnung , ich folge Deinen Rat !

            ^                 ^    ^

            So Richtig ?

            ^      ^

            Wenn du schon fragst: Vor Satz- und Interpunktionszeichen setzt man gemäß Duden kein Leerzeichen, darüber hinaus ist "Deinem" Genetiv und wird folglich mit "m" geschrieben und "richtig" ist ein (hier nicht substantiviertes) Adjektiv und wird folglich klein geschrieben.

            1. Seid gegrüßt, Ihr Fehlerhaften!

              Wenn du schon fragst: Vor Satz- und Interpunktionszeichen setzt man gemäß Duden kein Leerzeichen, darüber hinaus ist "Deinem" Genetiv und wird folglich mit "m" geschrieben und "richtig" ist ein (hier nicht substantiviertes) Adjektiv und wird folglich klein geschrieben.

              Wie war das mit dem Glashaus und den Steinen?

              Natürlich handelt es sich bei

              "Ich folge Deinem Rat"

              bei "Deinem Rat" nicht um Genitiv, sondern um Dativ.
              Genitiv wäre "Deines Rats".

              "Deinem" ist hier Adjektiv.

              Um das als Genitiv hinzukriegen, müßte man

              "Ich folge dem Rat des Bjoern." schreiben.
                           ^       ^
                           ^       Genitiv
                           ^
                           Dativ

              Der Korrektor

  2. Hi,

    dann enterne ich dass immer weil es auch so geht, aber nun stelle ich mir die frage warum und wofür ist dass eigendlich da?

    -um zB deine Scripts effizienter zu machen (Variablen werden nicht dem Paket "main" zugeordnet).
    -um Fehler schneller zu finden/zu vermeiden.
    -damit die Variablen nicht global sind. Stell dir vor, du hast ein 100k Perl Script, und ohne "my" müsstest du für jede Variable einen neuen Namen verwenden.
    Wenn du zB my $test innerhalb einer Schleife deklarierst, gilt dieses $test nur in der Schleife und du könntest gleichzeitig eine Variable $test auch ausserhalb der Schleife verwenden, nur um einen einen Vorteil vom "my" zu nennen.

    vieleicht eine sicherheitsvorkehrung für hacker/einbrecher?

    Hmmm vielleicht indirekt, weil deine Scripts weniger fehleranfällig sind, weil Variablen nicht global sind.

    aber dafür steht doch denke ich dass -w bei #!/usr/bin/perl -w

    nein, das steht für aktivierte Warnungen.

    $xNeTworKx.