AW: Website auf Sicherheitsmängel untersuchen
Ich bin was Websites angeht jetzt nicht so fit, aber die "Klassiker" kann man sicher mal abgrasen: SQL Injection, XSS, XSRF.
SQL Injection:
Bei einer SQL Injection wird versucht, SQL Befehle über die Website direkt an die Datenbank bzw. den Server zu schicken.
Kleines Beispiel (gibt auch deutlich komplexere Dinge bis zum Formatieren der HDD, falls der Server das mitmacht)
Code:
meine-url.xyz/seite/show_user.php?uid=12345 (normale Anfrage)
=> SELECT * FROM Users WHERE uid=12345;
meine-url.xyz/seite/show_user.php?uid=12345;UPDATE+Users+SET+type=admin+WHERE+uid=12345; (SQL Injection!)
=> SELECT * FROM Users WHERE uid=12345; UPDATE Users SET type=admin WHERE uid=12345; -> uid=12345 hat jetz Adminrechte!
Gegenmaßnahmen: Niemals Benutzereingaben vertrauen (gilt eigentlich immer!). Dazu zum Besipiel Prepared Statements nutzen. Die sind "vorkompiliert" und erwarten daher bestimmte Parameter. In Java sähe das z.b. so aus:
Code:
int uid = Integer.parseInt(request.getParameter("uid")); // müsste man eigentlich noch auf null prüfen...
Connection conn = ...; // Verbindung zur DB herstellen
PreparedStatement stmnt = conn.prepareStatement("SELECT * FROM Users WHERE uid=?"); // Anfrage vorbereiten
stmnt.setInt(1, 12345); // Parameter setzen
ResultSet res = stmnt.executeQuery(); // Anfrage absenden
Jetzt kann kein zusätzlicher SQL-Code mehr eingeschleust werden, da sich der erstens nicht in nen int konvertieren lässt und zweitens (falls man z.b. string als Datentyp gewählt hat) würde der SQL Server den String als String interpretieren und nicht mehr als zusätzlichen SQL Code.
XSS:
XSS steht für Cross-Site Scripting und wird zum Besipiel benutzt um Benutzerkonten zu kapern. Dabei wird ausgenutzt, dass Schadcode in einen gültigen Kontext eingefügt wird.
Beispiel: Du hast ein Gästebuch auf deiner Seite, bei dem Benutzer Einträge hinterlassen können.
Ein böser User könnte jetzt einen Eintrag dieser Art erzeugen:
Code:
Hallo, eine schöne Seite hast du da!<script type="text/javascript">alert("Dies ist ein XSS Angriff.")</script>
Wenn deine Website solche Eingaben zulässt wird dieses JavaScript bei jedem Aufruf der Seite vom Clientbrowser ausgeführt. Wenn der User angemeldet ist, können so z. B. Logindaten abgegriffen werden.
Dies ist jetzt ein sog. persistenter Angriff, da es ja bei jedem Aufruf der Seite vorhanden ist. Es gibt auch Angriffe, die ähnlich zu SQL Injections über die URL erfolgen können.
Gegenmaßnahmen: Schlüsselwörter wie <script> nicht in der Eingabe zulassen bzw. noch besser nur eine Liste von gültigen Schlüsselwörter nutzen. Wie Forentags zum Beispiel.
XSRF:
XSRF steht für Cross-Site Request Forgery. Dabei wird dem Browser des Users ohne sein Wissen ein manipulierter HTTP Request untergeschoben. Dies ist eigneltich auch eher interessant, wenn ein Benutzer bereits angemeldet ist, da der die vom Angreifer gewünschten Aktionen ausführen kann.
Beispiel: Ein User ist als Admin angemeldet. Nun hat der Hacker einen solchen Link in die Seite eingearbeitet (z.B. über XSS):
Code:
meine-seite.xyz/seite/user_admin?c=new&username=admin2&password=geheim&type=admin
Wenn der angemeldete Admin nun auf diesen Link klickt oder dieser Link in einen HTTP Request eingebettet wird, dann erzeugt dies einen neuen Admin-Account, den der Angreifer dann benutzen kann, um die Kontrolle über die Seite zu übernehmen.
Gegenmaßnahmen sind hier etwas schwieriger (nur HTTP POST Anfragen erlauben ist übrigens keine wirksame Gegenmaßnahme!). Serverseitig kann man halt nur versuchen, eine "geheime" Zeichenkette oder Zahl in ein Hidden-Feld des entsprechenden Formulars einzufügen. Die könnte man dann halt bei jedem Aufruf des User-Forms neu generieren. Client-seitig kann es aber auch Probleme geben, zuum Beispiel durch Session-IDs in gespeicherten Cookies.
Wie gesagt, ich habe nicht so viele Erfahrungen im Web-Bereich (eher normale Anwendungen ^^) und bin mir nicht sicher, ob das jetzt alles so 100% korrekt war. Es sollte aber reichen, um dir ne grobe Vorstellung zu bieten, worauf du dich einstellen solltest.
EDIT: Vor DDoS-Attacken, wie LulzSec das im Moment macht, kannst du dich eigentlich nicht richtig schützen. Es gibt zwar sündhaft teure Spezialhardware, die solche Angriffe erkennen kann, aber wirklich sicher ist man damit auch nicht. DDoS kann aber jede netzwerkfähige Anwendung treffen und ist nicht auf Websites beschränkt. Es wird ja auch eigentlich der Server angegriffen und nicht die Seite ansich.