SEC-2439: HttpSessionCsrfTokenRepository setHeaderName sets header instead of parameter

This commit is contained in:
Rob Winch 2013-12-13 15:36:30 -06:00
parent 4708287ad3
commit ca1080fb96
2 changed files with 18 additions and 6 deletions

View File

@ -91,14 +91,15 @@ public final class HttpSessionCsrfTokenRepository implements CsrfTokenRepository
* Sets the header name that the {@link CsrfToken} is expected to appear on
* and the header that the response will contain the {@link CsrfToken}.
*
* @param parameterName
* the new parameter name to use
* @param headerName
* the new header name to use
*/
public void setHeaderName(String parameterName) {
Assert.hasLength(parameterName, "parameterName cannot be null or empty");
this.parameterName = parameterName;
public void setHeaderName(String headerName) {
Assert.hasLength(headerName, "headerName cannot be null or empty");
this.headerName = headerName;
}
/**
* Sets the {@link HttpSession} attribute name that the {@link CsrfToken} is stored in
* @param sessionAttributeName the new attribute name to use

View File

@ -64,6 +64,17 @@ public class HttpSessionCsrfTokenRepositoryTests {
assertThat(token.getToken()).isNotEmpty();
}
@Test
public void generateCustomHeader() {
String headerName = "CSRF";
repo.setHeaderName(headerName);
token = repo.generateToken(request);
assertThat(token.getHeaderName()).isEqualTo(headerName);
assertThat(token.getToken()).isNotEmpty();
}
@Test
public void loadTokenNull() {
assertThat(repo.loadToken(request)).isNull();
@ -116,7 +127,7 @@ public class HttpSessionCsrfTokenRepositoryTests {
public void saveTokenNullTokenWhenSessionNotExists() {
repo.saveToken(null, request, response);
assertThat(request.getSession(false)).isNull();
}