2012-03-31 5 views
0

Ich leseplayframework - Sicherheitsleitfaden erwähnt nicht Sicherheit um GET Methode?

auf Spielsicherheitsleitfaden bis

http://www.playframework.org/documentation/1.2.4/security

aber was passiert, wenn ich meine Cookie ändern, um eine andere userId in der Sitzung haben und dann eine Anfrage. Ich weiß, dass es einen Schlüssel gibt, der nicht mehr passt, aber ich sehe im Sicherheitsleitfaden nicht, was in dieser Situation passiert. Ich würde vermuten, dass die GET-Anfrage fehlschlägt und die Wiedergabe löscht den Cookie, so dass der Benutzer neu starten kann (falls es nur ein Fehler war) und ihnen eine Seite mit Zugriffsverweigerung oder etwas zeigt?

Was passiert hier?

Antwort

2

Lassen Sie uns versuchen, um zu sehen, was in Quelle Sicherheitsmodul passiert:

if (!session.contains("username")) { 
    flash.put("url", "GET".equals(request.method) ? request.url : "/"); 
    login(); 
} 

... und Login-Methode

public static void login() throws Throwable { 
     Http.Cookie remember = request.cookies.get("rememberme"); 
     if (remember != null && remember.value.indexOf("-") > 0) { 
      String sign = remember.value.substring(0, remember.value.indexOf("-")); 
      String username = remember.value.substring(remember.value.indexOf("-") + 1); 
      if (Crypto.sign(username).equals(sign)) { 
       session.put("username", username); 
       redirectToOriginalURL(); 
      } 
     } 
     flash.keep("url"); 
     render("Application/login.html"); 
    } 

Also, in Bezug auf Ihre Frage und nach Ihren Schritten werden Sie umgeleitet werden zur Anmeldeseite.

0

Wie im Code von Orest V gezeigt, erstellt play einen Hash mit dem Inhalt der Cookies und Ihrer application.secret und fügt sie dem Inhalt des Cookies hinzu. Wenn ein Benutzer den Cookie manuell ändert, stimmt der Hash nicht mit dem Hash-Spiel überein, das beim Lesen des Cookies erstellt wird. Daher ist die Sitzung ungültig.

Verwandte Themen