请教下,目前有很多协议注入工具,拦截request请求后将里面的参数修改,然后再提交到后台,这种方式可以篡改request中的任何参数吗?比如request.getContextPath()中的值也是可以篡改的吗?

解决方案 »

  1.   

    可以啊,在filter,写一个包装类servletRequestWarpper就可以改变
      

  2.   

    sorry,之前的描述不是太清楚,和代码的设计无关,这里指的是前台提交请求的时候,先拦截住请求包(浏览器中设置代理),解析里面的request对象,对其中的get或者post方式提交的参数可以很轻松的篡改,对request进行伪造,然后将伪造好的request发送到服务器上,目前想确认下这种方式是否可以伪造request中的ContextPath的值,谢谢
      

  3.   

        不是httpclient,网上有个工具叫做burpsuite,它具备上面描述的拦截和伪造request对象的功能,目前项目做安全改造,只用burpsuite篡改过parameter属性中的数据(这就已经可以造成比较严重的后果了,比如删除一条记录,在删除过程中篡改记录id,就可以删除任何不再当前用户权限范围内的记录),就是不知道是否还可以修改ContextPath的值,如果可以修改的话,比如B.jsp中存在request.getContextPath(),这样我可以在他的父页面A.jsp向B.jsp跳转,然后将ContextPath值改成一段恶意js脚本,这样就有可能被跨站攻击了。