Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spring security-为什么不使用';spring security重定向';用于重定向到特定页面的登录表单中的参数_Spring_Security_Spring Security_Spring 3 - Fatal编程技术网

spring security-为什么不使用';spring security重定向';用于重定向到特定页面的登录表单中的参数

spring security-为什么不使用';spring security重定向';用于重定向到特定页面的登录表单中的参数,spring,security,spring-security,spring-3,Spring,Security,Spring Security,Spring 3,默认情况下,当用户提交登录表单并进行身份验证时,会将其重定向到他希望访问的最后一个URL,然后再注销(从请求缓存获取)或根URL。此外,如果在表单提交请求中找到“spring security redirect”参数,我们将被重定向到该参数的值 我希望使用此功能,但在thread中,Luke Taylor提到这会带来安全风险,我们应该为此使用一个额外的表单字段,然后自定义LoginSuccessHandler,以便根据需要检索和使用该表单字段 我无法理解他提到的安全风险,以及我们不应该使用Spr

默认情况下,当用户提交登录表单并进行身份验证时,会将其重定向到他希望访问的最后一个URL,然后再注销(从请求缓存获取)或根URL。此外,如果在表单提交请求中找到“
spring security redirect
”参数,我们将被重定向到该参数的值

我希望使用此功能,但在thread中,Luke Taylor提到这会带来安全风险,我们应该为此使用一个额外的表单字段,然后自定义LoginSuccessHandler,以便根据需要检索和使用该表单字段


我无法理解他提到的安全风险,以及我们不应该使用Spring security已经提供的功能,而不是使用我们自己的自定义逻辑的原因。我想使用该功能的原因与上面线程中的OP相同。

攻击是某种形式的(CSRF攻击)

如果攻击者(A)将修改后的链接发送给某人(B),B快速查看此链接并发现它是您的应用程序,他可能会单击此链接

B个人输入他的证件,然后开始流血

但是现在重定向被执行了,有了那个人B的凭证

因此,假设您有一个应用程序,其中每个用户都可以通过调用--(该应用程序中的第一个错误是这是GET而不是POST)来花费一些钱

现在想象(A)发送(B)此链接:

你看到问题了


总的来说,我强烈建议您使用一些CSRF保护过滤器,无论您是否使用该重定向。

谢谢。因此,我需要添加一个“spring security redirect”隐藏表单字段,而不是将其添加到URL中,并且只接受用户的POST请求?有些人建议这样做,因为这样会使将伪造的“链接”发送给其他人变得有点困难。无论如何,它仍然是可能的,发送给某人一个带有表单和按钮的Html页面,发送带有隐藏字段的帖子无论如何,使用CSRF保护过滤器,那么你就有点节省了,因为CSRF攻击可以来自整个互联网上的每一个网页!