Web-Sicherheit Flashcards
Unterschied Client-side und Server-side Angriffe?
Server-side Angriffe greifen die Daten und Anwendungen an, die sich auf dem Server befinden, während sich client-side Angriffe auf die Software fokussieren, die auf dem Computer installiert ist.
Was ist Cross-Site Scripting? (XSS)
Cross-Site-Scripting ist eine Art der HTML-Injection. Cross-Site-Scripting tritt dann auf, wenn eine Webanwendung Daten annimmt, die von einem Nutzer stammen, und diese Daten dann an einen Browser weitersendet, ohne den Inhalt zu überprüfen. Damit ist es einem Angreifer möglich, auch Skripte indirekt an den Browser des Opfers zu senden und damit Schadcode auf der Seite des Clients auszuführen.
Beispiele für XSS?
- Website zeigt Inhalte, die von vorherigem User eingegeben wurden. Wenn die Nachricht in einem Blog zum Beispiel Code enthält, wird der Code bei weiteren Besuchern der Seite ausgeführt.
–> Persistenter XSS - E-Mail Falle
Wenn ein Nutzer auf einen Link in einer Spam Mail klickt, wird der Code der im Link versteckt ist ausgeführt und der Code ist dann im Browser des Users.
–> Temporärer XSS
Wie kann XSS vermieden werden ?
Input Validation:
bezeichnet die Prüfung von beispielsweise Benutzereingaben. Weil fehlende oder unbrauchbare Eingaben zu schwerwiegenden Fehlern innerhalb eines Programms führen können, sollten diese Werte vor einer Übernahme in ein Programm validiert werden. Es erfolgt white statt blacklisting, also was ist erlaubt und nicht was ist verboten.
Was ist SQL-Injection?
Es ist ein injection attack bei dem SQL-Befehle , durch eine existierende Anwendung, in die Datenbank eingefügt werden. Um dies durchzuführen muss der Angreifer einen Parameter der Webanwendung erfahren und kann so einen SQL Befehl schreiben, den er im Parameter einfügen kann, sodass die Webanwendung diesen Befehl ausführt.
Folge: Daten können geklaut, verändert oder gelöscht werden.
Wie kann man sich vor SQL-Injection schützen?
- Client-supplied data darf keine SQL-Statements modifizieren
- Isolation der Webanwendung von SQL
- Persistente Frameworks
- Kein SQL-Statement auf dem Database Server sollte Parameterwerte enthalten
Was ist remote code injection?
Code-Injektion ist die Ausnutzung eines Computerfehlers, der durch die Verarbeitung ungültiger Daten verursacht wird. Die Injektion wird von einem Angreifer genutzt, um Code in ein verwundbares Computerprogramm einzuschleusen (zu „injizieren“) und zur Ausführung zu bringen.
Wie kann man sich vor remote code injection schützen?
- Die Rechte des Nutzers auf ein Minimum reduzieren
- Eingabevalidierung durch Whitelisting
- Dynamic commands validieren
- Shell-based Kommunikation sollte vermieden werden