При получении POST учетных данных для входа в приложение Spring Boot я получаю следующее исключение:
org.springframework.security.web.firewall.RequestRejectedException: запрос был отклонен, поскольку URL-адрес содержалпотенциально вредоносная строка ";"
Публикуется на /dologin
, а затем перенаправляется на /home
с добавлением jsessionid
в конце.Он также устанавливает cookie сессии.Я не изменил никаких настроек сеанса, и в 1011 * нет упоминания session
.
Я пытался установить
server.servlet.session.cookie.http-only=true
server.servlet.session.tracking-modes=cookie
Как упоминалось в https://stackoverflow.com/a/31792535/148844,, но это не сработало.
Я добавил
@Bean
public ServletContextInitializer servletContextInitializer() {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
SessionCookieConfig sessionCookieConfig=servletContext.getSessionCookieConfig();
sessionCookieConfig.setHttpOnly(true);
}
};
}
Но теперь он просто POSTs, устанавливает cookie и перенаправляет обратно на экран входа в систему.Как будто он не может получить доступ к сеансу.
Я установил server.session.tracking-modes=cookie
(вместо server.servlet...
) и теперь он использует только куки, но браузер Chrome не отправляет куки обратно на серверпосле входа в систему!/home
Действие отобразит страницу входа только в том случае, если атрибут user
в сеансе имеет значение null.
POST /dologin HTTP/1.1
Host: localhost:8080
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
Referer: http://localhost:8080/home
HTTP/1.1 302
Set-Cookie: JSESSIONID=3B82AAA40CE94FF490FBF7B4DBD837DD; Path=/; HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Location: http://localhost:8080/home
GET /home HTTP/1.1
Host: localhost:8080
Upgrade-Insecure-Requests: 1
Referer: http://localhost:8080/home
HTTP/1.1 200
Set-Cookie: JSESSIONID=B60BF649068F7E85346691FD2F5D119B; Path=/; HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2742
Date: Sat, 29 Sep 2018 17:41:55 GMT
Обратите внимание, что файлы cookie отличаются, и Chrome не отправил файл cookie на сервер?Почему?
Spring Boot 1.5.13, версия Chrome 69.0.3497.100 (официальная сборка) (64-разрядная версия)