TobbiVM

Tobbi-Blog

Script-Sicherheit

05.12.2013

Absichern des eigenen Scripts ist eigentlich nicht so kompliziert, wenn man einige Dinge beachtet. Es ist nicht immer ohne jede Mühe aber manchmal auch wieder so simpel...

Warum absichern?

Absichern bzw. schützen will man das eigene Script oder vorhandene optimieren. Damit verhindert man unter Umständen eine Menge Probleme. So spontan fallen mir folgende ein:

  • Sperrung der eigenen Domain weil als Spamschleuder missbraucht
  • Regressforderungen seitens des Providers
  • Ärger mit Abmahnungen u.ä. weil über die Domain Raubkopien verteilt wurden
  • Entfernen aus dem Google-Listing
  • ...

Wer will das schon riskieren? Natürlich kann man den Standpunkt vertreten "Meine kleine Seite? Warum sollte sich ein Hacker dafür interessieren. Aber, wenn man sich so sicher ist, warum wird beim Autofahren der Sicherheitsgurt angelegt? Warum beim Motorradfahren Schutzkleidung getragen? Zugegeben, ich habe in den über 30 Jahren noch nie den Sicherheitsgurt beansprucht - wohl aber die Schutzkleidung. Jeder muss wissen was er macht.

Hier zähle ich verschiedene Möglichkeiten auf die eigenen Scripte sicherer zu machen. Nicht absolut sicher, denn dies gibt es nicht! Einiges was die Sicherheit eines Webservers beeinflusst wird durch euren Provider, hoffentlich richtig, eingestellt. Das was Du machen kannst erfährst du hier:

Alle Eingaben von außen prüfen

Eingaben von außen sind z.B. Kommentare, Adressangaben, Registrierungsangaben und die GET-/POST-Parameter in der URL. Besonders die GET-Parameter werden gerne missbraucht.

Was kann man dagegen tun?

  • Alle, aber wirklich alle Eingaben prüfen. Aber nicht über eine Blacklist sondern über eine Whitelist! Der Vorteil ist hier das nur die von dir vorgesehenen Angaben / Möglichkeiten auch akzeptiert werden und alles andere durch einen Standardwert ersetzt wird.
    Wenn z.B. eine Artikel-ID oder Bezeichnung angegeben wird die nicht existiert führt dies normalerweise zu einer Fehlermeldung, oder das ganze Script hängt. Ersetzt hier ein Standardwert die falsche Eingabe so wird beispielsweise eine Fehlerseite angezeigt oder auf die Startseite gesprungen.
  • Mit den Funktionen htmlspecialchars() (alle HTML-Sonderzeichen werden ersetzt) und htmlentities() (alle Umlaute und andere Zeichen, entsprechend des Zeichensatzes, werden ersetzt)
    Alle normalen Eingaben wie Name, Adresse etc. damit "behandeln". Dafür benötigt man kein HTML oder ähnliches.
  • Vorsicht bei Image-Tags! Kann der User Bilder hochladen oder in seine Nachricht einfügen so könnte er hier z.B. '<img src="/boese.php" />' angeben. Dadurch wird ein ausführbares Script direkt hochgeladen.

Soll ein Benutzer aber besondere Auszeichnungen im Text verwenden können (z.B. in seiner Signatur) so kann man den bekannten BBcode o.ä. einsetzen.

Direkten Scriptaufruf verhindern

Unschön ist es wenn eigene Scripte von außen aufgerufen werden können. Man stelle sich ein Script vor mit dessen Hilfe man E-Mails versendet. Kann man dies von außen inkl. der entsprechendn Parameter aufrufen so kann es hervoragend als Spam-Schleuder missbraucht werden.

Was kann man dagegen tun?

  • Eine Möglichkeit ist es im Startscript eine Konstante zu definieren und diese zu Beginn eines jeden Scripts zu prüfen. Ergibt diese Prüfung ein negatives Ergebnis so kann das Script abgebrochen werden.
  • Weiterhin kann jedes Verzeichnis inkl. der Unterverzeichnissen mittels .htaccess geschützt werden. Dazu wird der Zugriff nur von localhost bzw. 127.0.0.1 erlaubt (Ausnahme bleiben die Scripte die von außen erreichbar sein müssen!).

Beides sollte zum Standard gehören und besonders im Adminbereich noch mittels .htpasswd erweitert werden. Auch wenn der Adminbereich mit einem Passwortschutz versehen ist kann schon dies eine schwere Hürde für Unbefugte sein.

 Sichere Passwörter verwenden

Verwende sichere Passwörter, Lange. Mit Sonderzeichen. Wer immer noch "123456789" oder "qwertz" oder sonstiges benutzt sollte die Finger von Registrierungen und ähnlichem lassen. Es gibt leider auch heute noch Seiten die nur Passwörter zulassen die nur aus Buchstaben und maximal 10 oder 12 Zeichen bestehen. Diese sollte man meiden. Diese Seitenbetreiber haben nicht verstanden das Ihre Seite durch solche Dinge ein ernstes Sichheitsproblem haben.

Sichere Passwörter sind z.B.

  • 9nLn94JbCkRM7X4TDWhJVWyCNvPR4KhS oder 54U9J4Vd39p0a3U5um7V00Z6c9U64cZe, auch wenn man nur Buchstaben und Zahlen nimmt
  • Oder Passwörter mit Sonderzeichen '-><"§$%&/' etc. spicken.
  • In unregelmäßigen Abständen Passwörter ersetzen.
  • Hier noch ein interessanter Artikel dazu

 Andere Hilfen / Tricks

Bei vielen Scripten steht in dem Head-Bereich ganz stolz der generator-tag. Dank diesem kann jeder, der will, leicht feststellen welches Script da gerade läuft und sich die richtige Strategie für einen Angriff zurechtlegen. Besonders die automatisch suchenden Bots freuen sich immer wieder. Lüge wenn du eine Joomla-Installation hast! Dann schreibe da 'WordPress' oder 'ZuckelForum' rein. Das veringert die Anzahl der Angriffe erheblich.

Sichere dein Adminverzeichnis immer zusätzlich mittels htaccess und htpswd ab. Dieser Schutz ist schwer zu knacken (solange ein entsprechendes Passwort benutzt wurde).

Benutze, wenn möglich, Scripte um auffällige IPs von vornherein zu sperren. Ich setzte hier mit viel Erfolg Bottrap ein. Wenn ich mir an manchen Tagen ansehe was alles versucht hat Schadscripte abzusetzen oder Contentklau zu begehen lohnt es sich!

Es gibt bestimmt noch viele, weitere Möglichkeiten sein Script sicher(er) zu machen. Bei allen Überlegungen sollte man sich aber folgende Dinge vor Augen halten.

  1. Deine Scriptsicherheit nutzt nichts wenn dein Server nicht sicher ist. Achte darauf das dort aktuelle PHP- und MySQL-Versionen laufen und das die Servereinstellungen stimmen (hierzu später einmal mehr)
  2. Nutze sichere Passwörter und wechsel diese in unregelmäßigen Abständen.
  3. Alles was du tust um eine relative Sicherheit zu erreichen dient dir nur dazu den Vorsprung vor den "Schädlingen" zu erhalten. Eine absolute Sicherheit wird es nie geben.
 

Kommentare: 0

Keine Kommentare vorhanden!

Neuen Kommentar verfassen:

Bitte füllen Sie mit * markierte Felder korrekt aus. JavaScript und Cookies müssen aktiviert sein.
Name: (Pflichtfeld)*
email: (Pflichtfeld, wird nicht veröffentlicht)*
Homepage:
:-):-):-):-):-):-):-):-):-):-):-):-)
Ihr Kommentar: *
 
Bitte tragen Sie den Zahlencode ein:*
Captcha
Powered by CMSimpleRealBlog



Unterstützt von CMSimple  •  Gestaltet von TobbiVM