如何禁用解析作为url参数/从url传递的登录参数
应用程序记录所有请求url
的。这意味着,至关重要的是不要使用url参数进行身份验证,因为这会导致日志成对出现的情况(login=abc&password=123)
。因此,我已配置spring-
security为从读取参数request-body
。通过将以下行添加到中来完成request-header
:
'Content-Type': 'application/x-www-form-urlencoded'
主体将是:
{'login':'admin', 'password':'password'}
很好,但是质量检查人员强迫我禁用通过网址参数进行身份验证的可能性。目前,到以下URL的POST也将进行身份验证:
https://example.com/foo?login=admin&password=password
有人知道禁用此选项的窍门吗?最好带有注释。
由于评论,我决定为我的问题添加更多细节。我spring-security
的配置为WebSecurityConfigurerAdapter
。我有
http.usernameParameter("login") .passwordParameter("password")
(...)
这使得可以Spring
同时在参数和正文中搜索登录数据。我希望禁用在URL中搜索这些参数。
回答:
这使得Spring在参数和正文中搜索登录数据。我希望禁用在URL中搜索这些参数。
我相信这是不可能的,因为这种行为不是由Spring而不是JavaEE本身实现的。
HttpServletRequest.getParameter文档状态:
以字符串形式返回请求参数的值,如果参数不存在,则返回null。请求参数是与请求一起发送的额外信息。对于HTTP Servlet,
。
但是您可以尝试使用看起来像这样的过滤器来改变它:
public class DisableGetAuthFiler extends OncePerRequestFilter { ...
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
filterChain.doFilter(
new HttpServletRequestWrapper(request) {
@Override
public String getParameter(String name) {
if (("login".equals(name) && getQueryString().contains("login"))
|| ("password".equals(name) && getQueryString().contains("password"))) {
return null;
} else {
return super.getParameter(name);
}
}
},
response
);
}
}
以上是 如何禁用解析作为url参数/从url传递的登录参数 的全部内容, 来源链接: utcz.com/qa/416586.html