gpt4 book ai didi

Spring 安全和特殊字符

转载 作者:行者123 更新时间:2023-12-02 22:04:54 26 4
gpt4 key购买 nike

我需要通过 url 在用户名和/或密码中使用特殊字符使用 j_spring_security_check 登录

http://localhost:8080/appname/j_spring_security_check?j_username=username&j_password=üüü

不工作并且

http://localhost:8080/appname/j_spring_security_check?j_username=username&j_password=%c3%bc%c3%bc%c3%bc

(带有“üüü”urlencoded)也不工作

有什么建议吗?如果您需要查看任何其他配置,请告诉我。

谢谢

最佳答案

Java Servlet 标准对 Unicode 的支持很差。 ISO-8859-1 的默认值是无用的,仍然没有跨容器兼容的方法将其配置为其他内容。

matteosilv中的过滤方法的答案适用于请求主体。对于 URL 中的参数,您必须使用特定于容器的选项。例如在 Tomcat , 设置 URIEncoding<Connector> 上在 server.xml ;在 Glassfish这是<parameter-encoding>glassfish-web.xml .

(如果您必须以完全跨容器兼容的方式工作,您最终不得不编写自己的 getParameter() 实现,这确实令人难过。糟糕的 Servlet。)

但是在任何情况下,在 GET URL 参数中传递登录表单字段都是一个坏主意。

这首先是因为登录导致状态发生变化,所以它不是“幂等的”。这使得 GET 成为一种不合适的方法,并导致大量实际问题,例如当您导航页面时可能会登录,或者由于缓存而无法登录,等等。

其次,URL 可以通过多种方式“泄露”,包括引用跟踪、日志记录、代理和浏览器历史记录保留。因此,您永远不应在 URL 中放置任何敏感数据(例如密码),包括在 GET 表单提交中。

我建议使用 POST 表单提交,连同 CharacterEncodingFilter .

关于Spring 安全和特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16302065/

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