SpringBoot中request获得的各种信息与SSRF

SpringBoot中request获得的各种信息与SSRF,第1张

在Spring Boot的框架下,可以通过在Controller中使用Autowired注入request,示例代码如下:

@Controller
public class UserController {
    @Autowired
    private HttpServletRequest request;

    @RequestMapping("/userinfo")
    public String index(Model model) {

        System.out.println("querystring"+request.getQueryString());
        System.out.println("getRequestURI:"+request.getRequestURI());
        System.out.println("getRequestURL:"+request.getRequestURL());
        System.out.println("getContextPath:"+request.getContextPath());
        System.out.println("getPathInfo:"+request.getPathInfo());
        System.out.println("getServletPath:"+request.getServletPath());

        return "userinfo";
    }
}

然后,通过request打印出各种get函数的信息如下:

getContextPath和getPathInfo两个函数的结果为空。

当从请求中获取信息并且组装URL时,根据几个函数的打印结果,可以看出getRequestURI和getRequestURL的结果应该是可信的,因为可以被当前服务器处理,肯定是内部的URL。但是对于getQueryString的结果,由于在传输时故意多传了参数名相同的两个参数,结果得到的依然含有连个同名的参数,说明其是原封不动地拿过来的,不能直接用于组装URL,否则,就有HPP(HTTP 参数污染)的攻击,详情可以参考应用安全系列之九:HTTP参数污染_jimmyleeee的博客-CSDN博客。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/877806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存