2 Stimmen

Session Hijacking: Vor- und Nachteile eines Filters, der Session-IDs unterdrückt

Ich versuche, das Problem der Sitzungsfixierung/des Kidnappings/Sidejackings auf einer ATG/JBoss/Tomcat-Site zu lösen. Es scheint, dass bei weitem die häufigsten Empfehlungen sind:

  1. Gewährung einer neuen Sitzung für den Benutzer, wenn er sich anmeldet. Dadurch wird verhindert, dass der Angreifer die Sitzungs-ID des Opfers vorhersagen kann. Ich habe diesen Ansatz zuerst ausprobiert, aber ich fürchte in meinem Fall funktioniert es vielleicht nicht

  2. Verwenden Sie eine Servlet-Filter um die Sitzung ungültig zu machen, wenn eine Sitzungs-ID (SID) in der URL übergeben wird. Der Filter verhindert außerdem das Umschreiben von URLs bei der Erstellung von Links mit SIDs.

Was sind die Vor- und Nachteile von Nr. 2? Einige, an die ich gedacht habe:

Profis :

  1. Dies scheint ein umfassenderer Schutz zu sein als Nr. 1: Nr. 1 schützt vor bösartigen URLs, die an das Opfer weitergegeben werden, Nr. 2 schützt vor jeder Art der Beschaffung von SIDs (unsichere drahtlose Netzwerke, Zugriff auf den Computer usw.) - Sie können die gewünschte SID nicht einfach als Anfrageparameter übergeben!

Nachteile :

  1. Die Sitzungsverwaltung wird für Benutzer ohne aktivierte Cookies abgeschaltet.
  2. Normale Benutzer werden ausgeloggt, wenn sie auf einen Link mit angegebener jsessionid klicken, obwohl ich nicht glaube, dass es aufgrund des Verhaltens des Filters solche legitimen Links im System geben wird.

2voto

rook Punkte 64487

2 ist zu stoppen Fixierung der Sitzung .

Außerdem müssen Sie CSRF auch "Session Riding" genannt, in Betracht. Hier sind Methoden zur Verhinderung von CSRF.

Vergessen Sie nicht die am meisten übersehene OWASP, OWASP A9 - Unzureichender Schutz der Transportschicht . Dies bedeutet, dass Ihre Sitzungs-ID über HTTPS übertragen werden muss zu jeder Zeit . Wenn Sie das nicht tun, kann jemand Firesheep benutzen, um sich das Konto zu schnappen.

1voto

drew Punkte 1282

Man könnte eine Variable in der Sitzung speichern, die die IP-Adresse des Benutzers, den Benutzer-Agenten usw. oder einen Hash davon enthält, und sie bei jeder Anfrage überprüfen, so dass die Entführer im Falle eines Hijacking diese Daten fälschen müssten.

Nicht perfekt, aber es hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X