在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博客。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)