Eine kleine Liste, PHP-bezogen (nicht Server allgemein)
(jeweils als Anregung zum Recherchieren, keine ausführliche Erklärung, weil das jetzt zu viel wäre):
Passwörter etc. hashen. Richtig hashen. Folgender Link hat einige wichtige Stichwörter und Infos allgemein:
http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords
SQL-Injections: Wenn man Datenbankabfragen macht, bei denen Benutzereingaben als Werte vorkommen
(zB. liste mir alles auf, wo der vom Benutzer im Forumlar eingegebene Text in der DB in Spalte xyz steht)
können Benutzer bei falschem Code auch die Art der Abfrage selber ändern und je nach Situation
Infos bekommen die sie nicht haben sollten, DB-Inhalte ändern, ganze DBs leeren usw.usw.
Codeproblem dabei: Variablen einfach mit der restlichen SQL-Anweisung zusammenhängen.
Abhilfe: Prepared Statements.
XSS: Wenn Eingaben von Benutzer A auch für andere Benutzer B,C,D sichtbar sind
könnte dieser außer Text auch zB. Javascript-Code mitgeben, der den Server zwar nicht stört,
aber bei den Browsern der anderen Benutzer ausgeführt wird.
Siehe htmlspecialchars oder je nach Fall striptags.
PHP-Dateien, die nur als Include für andere gedacht sind und nicht direkt vom Benutzer aufgerufen
werden sollen, in einen entsprechend abgesicherten Ordner (htaccess, deny from all)
Dateiuploads wie zB. Bilder können Schadsoftware enthalten. Vor allem für Benutzer die es anschauen,
aber auch für den Server. Als Benutzerschutz zB. alle Bilder nach Upload in ein anderes Format konvertieren.
Keine Dateien oder Eingaben von Benutzern oder irgendwem für Includes und/oder eval verwenden.
Bzw. eval überhaupt nicht verwenden.
Prinzipielle Unterschiede und Abgrenzungen zwischen Verschlüsselung, symmetrisch/asyymetrisch,
Blockmodes, Hash, MAC; Signatur, Padding etc. kennen.
zB. Verschlüsselung (richtig angewendet) verhindert dass jemand anders den Inhalt erfährt,
aber nicht, dass dieser Andere die Daten zu irgendeinem Müll ändert, ohne dass der richtige Benutzer
das (automatisch und zuverlässig) erkennen kann. Oder zB. Einen Hash einer Nachricht mit der Nachricht
zusammen zu versenden, als Garantie dass sie nicht verändert wurde, hilft überhaupt nicht.
Mehr zB. bei Wikipedia.
Charsets beachten (UTF8 usw.usw.). Nicht nur, damit zB. deutsche Umlaute richtig angezeigt werden,
sondern auch, weil verschiedene genannte Sicherheitsmaßnahmen nur dann richtig funktionieren,
wenn man auch wirklich das Charset hat das man angegeben hat.
In dem Zusammenhang auch Unicode-Normalisierung beachten.
...in jedem Thema können natürlich auch hier Fragen gestellt werden
Vor allem die letzten zwei Blöcke sind ziemlich weitreichende Themen, aber ich verspreche,
dass gründliches Lernen davon einen zu einem besseren Programmierer macht