避免用户能够构造输入来重定向服务器资源,当不能完全避免时,应该对非受信用户的输入做验证;或者创建一份安全字符串列表,限制用户只能输入该列表中的数据。
例如:在下面的代码片段中,程序接收不可信赖的数据,先判断其值是否合理,再将它的内容作为服务端的转发路径。
String path = request.getParameter("path");
//判断路径是否合理
if(isSafePath(path)){
request.getRequestDispatcher(path).forward(request, response);
}