当 url 参数具有 %40 时,生成 csrf 令牌时出现 500 内部服务器错误

问题描述 投票:0回答:1

对于 url,如果我想创建 CSRF 令牌,它将给我 500 内部服务器错误

https://abc/conf.tmpl?Email=ychandra-d%40dd.com&training=234

但是如果使用@而不是%40,则会生成csrf令牌

https://abc/[email protected]&training=234

有人可以帮我解决为什么更改 url 模式会产生错误吗?我需要为特殊字符添加任何其他依赖项吗?

完成了一些实现并添加了一些有关 csrf 的文件 -

文件已添加 -

csrfguard.js

csrfguard.properties

完成了一些实施-

在 web.xml 中添加 csrfGuardServlet、Owasp.CsrfGuard.Config、Owasp.CsrfGuard.Config.Print、csrfGuardFilter(其过滤器映射)、CsrfGuardServletContextListener、CsrfGuardHttpSessionListener

在apply.tmpl文件中添加

<script src="https://weblibrary.cdn.getgo.com/web-library-2/scripts/web-library.js"></script>
    <script type="text/javascript" src="/public/csrfguard"></script>

如 web.xml 文件中

<servlet-mapping>
        <servlet-name>csrfGuardServlet</servlet-name>
        <url-pattern>/public/csrfguard</url-pattern>
    </servlet-mapping>
javascript java url csrf csrf-token
1个回答
0
投票

确保电子邮件参数正确进行 URL 编码。 %40 是“@”符号的 URL 编码表示形式。构造 URL 时,使用正确的 URL 编码来表示特殊字符。

String encodedEmail = URLEncoder.encode("[email protected]", StandardCharsets.UTF_8.toString());
String url = "https://abc/conf.tmpl?Email=" + encodedEmail + "&training=234";
© www.soinside.com 2019 - 2024. All rights reserved.