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:
-
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
-
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 :
- 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 :
- Die Sitzungsverwaltung wird für Benutzer ohne aktivierte Cookies abgeschaltet.
- 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.