Struppi: AllesKlar

Beitrag lesen

  1. Ich lese hin und wieder das wenn man form/inputfelder mit perl auswertet bestimmte eingaben sperren sollte wie zum beispiel eine url oder -r o.ä. aber was genau muss ich sperren lassen? Gibt es da eine liste?

Nein natürlich nicht.
Der Punkt ist, du musst verhindern, dass ungeprüfter Input in kritische Operationen gelangt. Das kann alles mögliche sein, angefangen von dem open Beispiel von Beat, über mySQL Abfragen oder die Ausgabe von HTML und der Gefahr von XSS Angriffen. Und es gibt noch mehr Sachen die nicht so tragisch sein müssen, z.b. Spamabwehr oder Parameter die zu einem Skriptabbruch führen können.

  1. Wie gross sollte ein skript max. werden oder ist das egal/hat es nachteile? Ich habe zum beispiel ein cgi skript das inzwischen fast 200kb groß ist.

Ich vermute du verwendest das CGI Modul, auch das hat diese Größe, wenn du mit Datenbanken arbeitest, wirst du das DBI Modul verwenden, dass fast 300KB gross ist und noch einige Untermodule einbindet. aber natürlich solltest du versuchen, das Skript Modular zu halten um evtl. selten benötigte Operationen auszulagern.

  1. Warum sollte man variablen o.ä. nicht in anführungszeichen schreiben?
    was ich meine ist das:
    print "Hallo mein name ist $name";
    es wird aber immer geraten es so zu schreiben:
    print "Hallo mein name ist " . $name;

Wer sagt das man Variabeln nicht in Anführungszeichen schreiben soll?
Es wird manchmal geraten, weil es manchmal die Lesbarkeit verschlechtert, da i.d.R. Editoren mit syntax highlighting diese Variabeln nicht hervorheben und es ist immer Unsinn sowas zu schreiben print "$var";, aber ansonsten ist es durchaus nicht ungewöhnlich eine Variabel in einem String interpolieren zu lassen. Aber da es schnell unübersichtlich wird, ist es oft sinnvoller printf zu verwenden, zumal man damit auch die Ausgabe leicht formatieren kann.

Aber du solltest in deinem Beispiel auch keine doppelten Anführungszeichen verwenden.
Wenn du es so schreiben willst, dann so:
print 'Hallo mein name ist ', $name;

Struppi.