9 Sicherheitstipps zum Schutz Ihrer Website vor Hackern

Sie denken vielleicht nicht, dass Ihre Website etwas wert ist, gehackt zu werden, aber Websites werden ständig kompromittiert. Die meisten Sicherheitsverletzungen auf der Website bestehen nicht darin, Ihre Daten zu stehlen oder mit Ihren Daten in Konflikt zu geraten Website-Layout Stattdessen wird versucht, Ihren Server als E-Mail-Relay für Spam zu verwenden oder einen temporären Webserver einzurichten, um normalerweise Dateien illegaler Art bereitzustellen. Andere sehr häufige Methoden, um gefährdete Computer zu missbrauchen, sind die Verwendung Ihrer Server als Teil eines Botnetzes oder die Suche nach Bitcoins. Sie könnten sogar von Ransomware getroffen werden.

Das Hacken wird regelmäßig von automatisierten Skripten durchgeführt, die zum Durchsuchen des Internets geschrieben wurden, um bekannte Sicherheitsprobleme bei Websites in Software auszunutzen. Hier sind unsere neun wichtigsten Tipps, mit denen Sie und Ihre Website online sicher sind.

01. Halten Sie die Software auf dem neuesten Stand

Es mag offensichtlich erscheinen, aber es ist wichtig, dass Sie die gesamte Software auf dem neuesten Stand halten, um Ihre Website sicher zu halten. Dies gilt sowohl für das Server-Betriebssystem als auch für alle Software, die Sie möglicherweise auf Ihrer Website ausführen, z. B. ein CMS oder ein Forum. Wenn Sicherheitslücken in der Website gefunden werden, versuchen Hacker schnell, diese zu missbrauchen.



Wenn Sie eine verwaltete Hosting-Lösung verwenden, müssen Sie sich nicht so viele Gedanken über die Anwendung von Sicherheitsupdates für das Betriebssystem machen, wie das Hosting-Unternehmen dafür sorgen sollte.

Wenn Sie auf Ihrer Website Software von Drittanbietern verwenden, z. B. ein CMS oder ein Forum, sollten Sie sicherstellen, dass Sie Sicherheitspatches schnell anwenden können. Die meisten Anbieter haben eine Mailingliste oder einen RSS-Feed, in dem alle Sicherheitsprobleme der Website aufgeführt sind. WordPress , Umbraco und viele andere CMS benachrichtigen Sie bei der Anmeldung über verfügbare Systemupdates.

Viele Entwickler verwenden Tools wie Composer, npm oder RubyGems, um ihre Softwareabhängigkeiten zu verwalten. Sicherheitslücken, die in einem Paket auftreten, von dem Sie abhängig sind, das Sie jedoch nicht beachten, sind eine der einfachsten Möglichkeiten, um aufzufangen. Stellen Sie sicher, dass Sie Ihre Abhängigkeiten auf dem neuesten Stand halten, und verwenden Sie Tools wie Gemnasium um automatische Benachrichtigungen zu erhalten, wenn eine Sicherheitsanfälligkeit in einer Ihrer Komponenten gemeldet wird.

02. Achten Sie auf die SQL-Injection

SQL-Injection-Angriffe treten auf, wenn ein Angreifer ein Webformularfeld oder einen URL-Parameter verwendet, um Zugriff auf Ihre Datenbank zu erhalten oder diese zu bearbeiten. Wenn Sie Standard-Transact SQL verwenden, ist es einfach, unwissentlich unerwünschten Code in Ihre Abfrage einzufügen, mit dem Sie Tabellen ändern, Informationen abrufen und Daten löschen können. Sie können dies leicht verhindern, indem Sie immer parametrisierte Abfragen verwenden. Die meisten Web-Sprachen verfügen über diese Funktion und sind einfach zu implementieren.

Betrachten Sie diese Abfrage:

So fügen Sie ein weiteres Foto in Photoshop hinzu
'SELECT * FROM table WHERE column = '' + parameter + '';'

Wenn ein Angreifer den URL-Parameter so geändert hat, dass er 'oder' 1 '=' 1 übergibt, sieht die Abfrage folgendermaßen aus:

'SELECT * FROM table WHERE column = '' OR '1'='1';'

Da '1' gleich '1' ist, kann der Angreifer am Ende der SQL-Anweisung eine zusätzliche Abfrage hinzufügen, die ebenfalls ausgeführt wird.

Sie können diese Abfrage beheben, indem Sie sie explizit parametrisieren. Wenn Sie beispielsweise MySQLi in PHP verwenden, sollte dies folgendermaßen aussehen:

$stmt = $pdo->prepare('SELECT * FROM table WHERE column = :value'); $stmt->execute(array('value' => $parameter));

03. Vor XSS-Angriffen schützen

XSS-Angriffe (Cross-Site Scripting) fügen schädliches JavaScript in Ihre Seiten ein, das dann in den Browsern Ihrer Benutzer ausgeführt wird, und können den Seiteninhalt ändern oder Informationen stehlen, um sie an den Angreifer zurückzusenden. Wenn Sie beispielsweise Kommentare auf einer Seite ohne Validierung anzeigen, sendet ein Angreifer möglicherweise Kommentare mit Skript-Tags und JavaScript, die im Browser jedes anderen Benutzers ausgeführt werden und dessen Anmelde-Cookie stehlen können, sodass der Angriff die Kontrolle über das Konto aller Benutzer übernehmen kann Benutzer, der den Kommentar angesehen hat. Sie müssen sicherstellen, dass Benutzer keine aktiven JavaScript-Inhalte in Ihre Seiten einfügen können.

Dies ist ein besonderes Problem in modernen Webanwendungen, in denen Seiten jetzt hauptsächlich aus Benutzerinhalten erstellt werden und in vielen Fällen HTML generiert wird, das dann auch von Front-End-Frameworks wie Angular und Ember interpretiert wird. Diese Frameworks bieten viele XSS-Schutzfunktionen, aber das Mischen von Server- und Client-Rendering schafft auch neue und kompliziertere Angriffsmöglichkeiten: Das Einfügen von JavaScript in HTML ist nicht nur effektiv, sondern Sie können auch Inhalte einfügen, die Code ausführen, indem Sie Angular-Anweisungen einfügen oder Ember verwenden Helfer.

Der Schlüssel hier ist, sich darauf zu konzentrieren, wie Ihre benutzergenerierten Inhalte die von Ihnen erwarteten Grenzen überschreiten und vom Browser als etwas anderes interpretiert werden können, als Sie beabsichtigt haben. Dies ähnelt der Verteidigung gegen SQL-Injection. Verwenden Sie beim dynamischen Generieren von HTML Funktionen, die die gewünschten Änderungen explizit vornehmen (z. B. element.setAttribute und element.textContent, die vom Browser automatisch maskiert werden, anstatt element.innerHTML manuell festzulegen), oder verwenden Sie Funktionen in Ihrem Template-Tool, das automatisch die entsprechende Escape-Funktion ausführt, anstatt Zeichenfolgen zu verketten oder unformatierten HTML-Inhalt festzulegen.

Ein weiteres leistungsstarkes Tool in der Toolbox des XSS-Verteidigers ist die Content Security Policy (CSP). CSP ist ein Header, den Ihr Server zurückgeben kann. Er weist den Browser an, die Ausführung von JavaScript auf der Seite einzuschränken, z. B. das Ausführen von Skripten, die nicht in Ihrer Domain gehostet werden, das Inline-JavaScript zu verbieten oder eval () zu deaktivieren. Mozilla hat eine ausgezeichnete Anleitung mit einigen Beispielkonfigurationen. Dies erschwert die Arbeit der Skripte eines Angreifers, selbst wenn diese auf Ihre Seite gelangen können.

04. Vorsicht vor Fehlermeldungen

Achten Sie darauf, wie viele Informationen Sie in Ihren Fehlermeldungen preisgeben. Stellen Sie Ihren Benutzern nur minimale Fehler zur Verfügung, um sicherzustellen, dass keine auf Ihrem Server vorhandenen Geheimnisse (z. B. API-Schlüssel oder Datenbankkennwörter) verloren gehen. Geben Sie auch keine vollständigen Ausnahmedetails an, da dies komplexe Angriffe wie die SQL-Injection erheblich vereinfachen kann. Behalten Sie detaillierte Fehler in Ihren Serverprotokollen bei und zeigen Sie den Benutzern nur die Informationen an, die sie benötigen.

05. Auf beiden Seiten validieren

Die Validierung sollte immer sowohl auf der Browser- als auch auf der Serverseite erfolgen. Der Browser kann einfache Fehler wie leere Pflichtfelder und die Eingabe von Text in ein Feld nur mit Zahlen erkennen. Diese können jedoch umgangen werden, und Sie sollten sicherstellen, dass Sie nach dieser Validierung und einer tieferen Validierung auf der Serverseite suchen, da dies dazu führen kann, dass schädlicher Code oder Skriptcode in die Datenbank eingefügt wird oder unerwünschte Ergebnisse auf Ihrer Website verursacht werden.

06. Überprüfen Sie Ihre Passwörter

Jeder weiß, dass er komplexe Passwörter verwenden sollte, aber das bedeutet nicht, dass dies immer der Fall ist. Es ist wichtig, sichere Kennwörter für Ihren Server- und Website-Verwaltungsbereich zu verwenden, aber ebenso wichtig, auf guten Kennwortpraktiken für Ihre Benutzer zu bestehen, um die Sicherheit ihrer Konten zu schützen.

So sehr es den Benutzern auch nicht gefallen mag, die Durchsetzung von Kennwortanforderungen wie mindestens acht Zeichen, einschließlich eines Großbuchstabens und einer Zahl, trägt zum Schutz ihrer Informationen auf lange Sicht bei.

Passwörter sollten immer als verschlüsselte Werte gespeichert werden, vorzugsweise unter Verwendung eines Einweg-Hashing-Algorithmus wie SHA. Wenn Sie diese Methode verwenden, werden bei der Authentifizierung von Benutzern immer nur verschlüsselte Werte verglichen. Für zusätzliche Website-Sicherheit ist es eine gute Idee, die Passwörter mit einem neuen Salt pro Passwort zu salzen.

Wenn jemand Ihre Passwörter hackt und stiehlt, kann die Verwendung von Hash-Passwörtern zur Schadensbegrenzung beitragen, da eine Entschlüsselung nicht möglich ist. Das Beste, was jemand tun kann, ist ein Wörterbuchangriff oder ein Brute-Force-Angriff, bei dem im Wesentlichen jede Kombination erraten wird, bis eine Übereinstimmung gefunden wird. Bei Verwendung von gesalzenen Passwörtern ist das Knacken einer großen Anzahl von Passwörtern noch langsamer, da jede Vermutung für jedes Salt + -Passwort separat gehasht werden muss, was rechenintensiv ist.

Glücklicherweise bieten viele CMS eine sofort einsatzbereite Benutzerverwaltung mit vielen dieser integrierten Website-Sicherheitsfunktionen, obwohl möglicherweise einige Konfigurations- oder Zusatzmodule erforderlich sind, um gesalzene Kennwörter (vor Drupal 7) zu verwenden oder die Mindestkennwortstärke festzulegen. Wenn Sie .NET verwenden, sollten Sie Mitgliedschaftsanbieter verwenden, da diese sehr konfigurierbar sind, integrierte Website-Sicherheit bieten und vorgefertigte Steuerelemente für die Anmeldung und das Zurücksetzen von Kennwörtern enthalten.

07. Vermeiden Sie das Hochladen von Dateien

Das Hochladen von Dateien auf Ihre Website durch Benutzer kann ein großes Sicherheitsrisiko für die Website darstellen, selbst wenn lediglich der Avatar geändert werden muss. Das Risiko besteht darin, dass jede hochgeladene Datei, so unschuldig sie auch aussehen mag, ein Skript enthält, das bei Ausführung auf Ihrem Server Ihre Website vollständig öffnet.

Wenn Sie ein Formular zum Hochladen von Dateien haben, müssen Sie alle Dateien mit großem Misstrauen behandeln. Wenn Sie Benutzern das Hochladen von Bildern erlauben, können Sie sich nicht auf die Dateierweiterung oder den MIME-Typ verlassen, um zu überprüfen, ob es sich bei der Datei um ein Bild handelt, da diese leicht gefälscht werden können. Selbst das Öffnen der Datei und das Lesen des Headers oder die Verwendung von Funktionen zum Überprüfen der Bildgröße sind nicht kinderleicht. In den meisten Bildformaten kann ein Kommentarbereich gespeichert werden, der PHP-Code enthalten kann, der vom Server ausgeführt werden kann.

Was können Sie also tun, um dies zu verhindern? Letztendlich möchten Sie verhindern, dass Benutzer Dateien hochladen können, die sie hochladen. Standardmäßig versuchen Webserver nicht, Dateien mit Bilderweiterungen auszuführen, sondern verlassen sich nicht nur darauf, die Dateierweiterung zu überprüfen, da bekannt ist, dass eine Datei mit dem Namen image.jpg.php durchkommt.

Einige Optionen sind das Umbenennen der Datei beim Hochladen, um die korrekte Dateierweiterung sicherzustellen, oder das Ändern der Dateiberechtigungen, z. B. chmod 0666, damit sie nicht ausgeführt werden kann. Wenn Sie * nix verwenden, können Sie eine .htaccess-Datei erstellen (siehe unten), die nur den Zugriff auf festgelegte Dateien ermöglicht, um den zuvor erwähnten Angriff mit doppelter Erweiterung zu verhindern.

deny from all order deny,allow allow from all

Letztendlich besteht die empfohlene Lösung darin, den direkten Zugriff auf hochgeladene Dateien insgesamt zu verhindern. Auf diese Weise werden alle auf Ihre Website hochgeladenen Dateien in einem Ordner außerhalb der Webroot oder in der Datenbank als Blob gespeichert. Wenn auf Ihre Dateien nicht direkt zugegriffen werden kann, müssen Sie ein Skript erstellen, um die Dateien aus dem privaten Ordner (oder einem HTTP-Handler in .NET) abzurufen und an den Browser zu senden. Bild-Tags unterstützen ein src-Attribut, das keine direkte URL zu einem Bild ist. Daher kann Ihr src-Attribut auf Ihr Dateiübermittlungsskript verweisen, sofern Sie den richtigen Inhaltstyp im HTTP-Header festlegen. Zum Beispiel:

Die meisten Hosting-Anbieter kümmern sich für Sie um die Serverkonfiguration. Wenn Sie Ihre Website jedoch auf Ihrem eigenen Server hosten, sollten Sie einige Dinge überprüfen.

Stellen Sie sicher, dass Sie über eine Firewall-Einrichtung verfügen und alle nicht wesentlichen Ports blockieren. Wenn möglich, richten Sie eine DMZ (Demilitarized Zone) ein, die nur den Zugriff auf die Ports 80 und 443 von außen ermöglicht. Dies ist möglicherweise nicht möglich, wenn Sie nicht über ein internes Netzwerk auf Ihren Server zugreifen können, da Sie Ports öffnen müssten, um das Hochladen von Dateien zu ermöglichen und sich über SSH oder RDP remote bei Ihrem Server anzumelden.

Wenn Sie zulassen, dass Dateien aus dem Internet hochgeladen werden, verwenden Sie nur sichere Transportmethoden zu Ihrem Server wie SFTP oder SSH.

Wenn möglich, lassen Sie Ihre Datenbank auf einem anderen Server als Ihrem Webserver laufen. Dies bedeutet, dass auf den Datenbankserver nicht direkt von außen zugegriffen werden kann, sondern nur Ihr Webserver darauf zugreifen kann, wodurch das Risiko minimiert wird, dass Ihre Daten offengelegt werden.

Vergessen Sie nicht, den physischen Zugriff auf Ihren Server einzuschränken.

08. Verwenden Sie HTTPS

HTTPS ist ein Protokoll zur Sicherheit über das Internet. HTTPS garantiert, dass Benutzer mit dem Server sprechen, den sie erwarten, und dass niemand sonst den Inhalt abfangen oder ändern kann, den sie während der Übertragung sehen.

1 TB Solid State Drive für MacBook Pro

Wenn Sie etwas haben, das Ihre Benutzer möglicherweise privat haben möchten, ist es sehr ratsam, nur HTTPS zu verwenden, um es bereitzustellen. Das bedeutet natürlich Kreditkarten- und Anmeldeseiten (und die URLs, an die sie gesendet werden), aber normalerweise auch viel mehr von Ihrer Website. In einem Anmeldeformular wird beispielsweise häufig ein Cookie gesetzt, das zusammen mit jeder anderen Anfrage, die ein angemeldeter Benutzer stellt, an Ihre Site gesendet und zur Authentifizierung dieser Anfragen verwendet wird. Ein Angreifer, der dies stiehlt, kann einen Benutzer perfekt imitieren und seine Anmeldesitzung übernehmen. Um diese Art von Angriffen abzuwehren, möchten Sie fast immer HTTPS für Ihre gesamte Site verwenden.

Das ist nicht mehr so ​​knifflig oder teuer wie früher. Lassen Sie uns verschlüsseln bietet völlig kostenlose und automatisierte Zertifikate, die Sie zum Aktivieren von HTTPS benötigen, und es stehen vorhandene Community-Tools für eine Vielzahl gängiger Plattformen und Frameworks zur Verfügung, um diese automatisch für Sie einzurichten.

Insbesondere hat Google angekündigt, dass es Sie in den Suchrankings verbessern wird, wenn Sie HTTPS verwenden, was auch einen SEO-Vorteil bietet. Unsicheres HTTP ist auf dem Weg nach draußen und jetzt ist die Zeit für ein Upgrade gekommen.

Verwenden Sie HTTPS bereits überall? Gehen Sie weiter und sehen Sie sich die Einrichtung von HTTP Strict Transport Security (HSTS) an, einem einfachen Header, den Sie Ihren Serverantworten hinzufügen können, um unsicheres HTTP für Ihre gesamte Domain zu verbieten.

09. Holen Sie sich Website-Sicherheitstools

Sobald Sie glauben, alles getan zu haben, ist es Zeit, die Sicherheit Ihrer Website zu testen. Der effektivste Weg, dies zu tun, ist die Verwendung einiger Website-Sicherheitstools, die oft als Penetrationstests oder kurz Pen-Tests bezeichnet werden.

Es gibt viele kommerzielle und kostenlose Produkte, die Sie dabei unterstützen. Sie arbeiten auf einer ähnlichen Basis wie Skript-Hacker, indem sie alle bekannten Exploits testen und versuchen, Ihre Site mithilfe einiger der zuvor genannten Methoden wie SQL Injection zu gefährden.

Einige kostenlose Tools, die einen Blick wert sind:

  • Netsparker (Kostenlose Community Edition und Testversion verfügbar). Gut zum Testen von SQL Injection und XSS
  • OpenVAS Behauptet, der fortschrittlichste Open Source-Sicherheitsscanner zu sein. Gut zum Testen bekannter Schwachstellen, scannt derzeit über 25.000. Die Einrichtung kann jedoch schwierig sein und erfordert die Installation eines OpenVAS-Servers, der nur unter * nix ausgeführt wird. OpenVAS ist die Gabel eines Nessus, bevor es zu einem kommerziellen Closed-Source-Produkt wurde.
  • SecurityHeaders.io (kostenloser Online-Check). Ein Tool, mit dem Sie schnell melden können, welche oben genannten Sicherheitsheader (z. B. CSP und HSTS) eine Domäne aktiviert und korrekt konfiguriert hat.
  • Xenotix XSS Exploit Framework Ein Tool von OWASP (Open Web Application Security Project), das eine große Auswahl an XSS-Angriffsbeispielen enthält, mit denen Sie schnell überprüfen können, ob die Eingaben Ihrer Site in Chrome, Firefox und IE anfällig sind.

Die Ergebnisse automatisierter Tests können entmutigend sein, da sie eine Fülle potenzieller Probleme darstellen. Das Wichtigste ist, sich zuerst auf die kritischen Themen zu konzentrieren. Jedes gemeldete Problem enthält normalerweise eine gute Erklärung für die potenzielle Sicherheitsanfälligkeit. Sie werden wahrscheinlich feststellen, dass einige der mittleren / niedrigen Probleme für Ihre Website kein Problem darstellen.

Es gibt einige weitere Schritte, die Sie ausführen können, um manuell zu versuchen, Ihre Site durch Ändern der POST / GET-Werte zu gefährden. Ein Debugging-Proxy kann Ihnen dabei helfen, da er die Werte einer HTTP-Anforderung zwischen Ihrem Browser und dem Server abfangen kann. Eine beliebte Freeware-Anwendung namens Geiger ist ein guter Ausgangspunkt.

Was sollten Sie also versuchen, an der Anfrage zu ändern? Wenn Sie Seiten haben, die nur für einen angemeldeten Benutzer sichtbar sein sollen, versuchen Sie, URL-Parameter wie Benutzer-ID oder Cookie-Werte zu ändern, um Details eines anderen Benutzers anzuzeigen. Ein weiterer zu testender Bereich sind Formulare, bei denen die POST-Werte geändert werden, um zu versuchen, Code zur Durchführung von XSS zu senden, oder ein serverseitiges Skript hochgeladen wird.

Zum Thema passende Artikel: