gpt4 book ai didi

Spring Boot : RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";"

转载 作者:行者123 更新时间:2023-12-03 14:10:39 27 4
gpt4 key购买 nike

当我发布 Spring Boot 应用程序的登录凭据时,出现以下异常。

org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";"



它正在发布到 /dologin然后重定向到 /homejsessionid附加到最后。它也设置 session cookie。我没有更改任何 session 设置,也没有提到 sessionapplication.properties .

我试图设置
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);
}
};
}

但现在它只是 POST,设置 cookie,然后重定向回登录屏幕。就好像它无法访问 session 一样。

我设置了 server.session.tracking-modes=cookie (而不是 server.servlet... )并且它现在只使用 cookie,但是 Chrome 浏览器在登录后不会将 cookie 发送回服务器! /home如果 user,操作只会重新显示登录页面 session 中的属性为空。
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 位)

最佳答案

好换 server.servlet.session.cookie.http-only=trueserver.session.tracking-modes=cookie和改变 http://localhost:8080http://127.0.0.1:8080/工作。我找到了这个答案:

Chrome localhost cookie not being set

Chrome 似乎一直拒绝允许 localhost禁止 localhost .大约一三个月前它正在工作。 localhost正在为 Rails 应用程序工作,而 Chrome 正在发送 cookie。

事实上,Chrome 也在发送 _mt_rails_session用于 localhost 的 Rails cookie到 Spring Boot 应用程序,但绝不是 JSESSIONID曲奇饼。

我怀疑,但尚未确认,这可能是由于在端口 8080 上为不相关的第三个 Spring Boot 应用程序设置了 HTTPS,并且 Chrome 内部可能缓存了一些 HSTS 设置。这可能是 Chrome 中的一个错误。

关于 Spring Boot : RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52566368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com