Bezüglich Webprogrammierung bin ich noch ziemlich unerfahren. Die meiste Zeit habe ich mit Client-Anwendungen verbracht. Daher bin ich neugierig, welche gängigen Angriffe ich bei meiner Website fürchten/testen sollte.
Antworten
Zu viele Anzeigen?SQL-INJEKTIONSANGRIFFE. Sie sind einfach zu vermeiden, aber leider allzu häufig.
VERTRAUEN SIE NIEMALS, NIEMALS, NIEMALS, NIEMALS (habe ich "niemals" erwähnt?) Benutzerinformationen, die Ihnen von Formular-Elementen übergeben wurden. Wenn Ihre Daten nicht überprüft werden, bevor sie in andere logische Ebenen Ihrer Anwendung übergeben werden, können Sie genauso gut einem Fremden auf der Straße die Schlüssel zu Ihrer Website geben.
Sie haben nicht erwähnt, auf welcher Plattform Sie sich befinden, aber wenn Sie ASP.NET verwenden, können Sie mit dem guten alten Scott Guthrie und seinem Artikel "Tipp/Trick: Schutz vor SQL-Injektionsangriffen" beginnen.
Danach müssen Sie darüber nachdenken, welche Art von Daten Sie Benutzern erlauben, in Ihre Datenbank einzugeben und schließlich wieder auszugeben. Wenn Sie HTML-Einfügungen gestatten und diese später präsentieren, sind Sie anfällig für Cross-Site-Scripting-Angriffe (bekannt als XSS).
Das sind die beiden Punkte, die mir einfallen, aber unser eigener Jeff Atwood hatte einen guten Artikel auf Coding Horror mit einer Rezension des Buches "19 Deadly Sins of Software Security".
Die meisten Leute hier haben SQL Injection und XSS erwähnt, was sozusagen korrekt ist, aber lassen Sie sich nicht täuschen - die wichtigsten Dinge, um die Sie sich als Webentwickler kümmern müssen, sind die EINGABENÜBERPRÜFUNG, wo XSS und SQL Injection herkommen.
Zum Beispiel, wenn Sie ein Formularfeld haben, das nur Ganzzahlen akzeptiert, stellen Sie sicher, dass Sie auf der Client-Seite UND der Server-Seite etwas implementieren, um die Daten zu bereinigen.
Überprüfen Sie jede Eingabe besonders sorgfältig, wenn sie in einer SQL-Abfrage enden wird. Ich schlage vor, eine Escaper-Funktion zu erstellen und sie um alles zu wickeln, was in eine Abfrage geht. Zum Beispiel:
$query = "SELECT feld1, feld2 FROM tabelle1 WHERE feld1 = '" . myescapefunc($userinput) . "'";
Ebenso, wenn Sie irgendwelche benutzerdefinierten Informationen auf einer Webseite anzeigen möchten, stellen Sie sicher, dass Sie alle -Tags entfernt haben oder alles andere, das zu einer Ausführung von Javascript führen könnte (wie onLoad= oder onMouseOver= usw. Attribute an Tags).</p></x-turndown>
Sie können auch auf dieser Website sehen, dass die schädlichsten Dinge, um die Sie sich kümmern werden, Code-Injektionen in Ihre Anwendung betreffen, also XSS (Cross-Site-Scripting) und SQL-Injektionen (die Vorschläge von @Patrick) sind Ihre größten Bedenken. Im Grunde genommen möchten Sie sicherstellen, dass, wenn Ihre Anwendung es einem Benutzer erlaubt, beliebigen Code einzufügen, dieser reguliert und getestet wird, um sicherzustellen, dass nur Dinge, die Sie sicher zulassen möchten (ein HTML-Link, ein Bild usw.), übergeben werden, und nichts anderes ausgeführt wird.