跨域提交表单攻击

原理:对于大多数服务器,html表单可以向任何服务器的任何url地址提交,攻击者可以利用此点向本来不需要处理表单的页面采用post方式提交大表单,或者向处理表单的页面采用post方式提交大表单,以此来消耗服务器的资源。(提交方式也可以采用其它方式,不局限于post)

1、对于如下表单,可以向任何服务器的任何url提交,如果服务器没有防范,则会处理表单会消耗不必要的资源。比如主页面只需要get请求获取,而攻击则可以向主业使用post发送大量表单到主页,服务器需要处理不必要的表单,如果攻击者发送大量表单,则会给服务器造成不必要的负担。(更严重的是控制表单提交速度)
<form action="http://bbs.xjtu.edu.cn" method="post" enctype="multipart/form-data" name="form1" id="form1">
    <label for="name">name</label>
    <input type="text" name="name" id="name" />
    <label for="file">file</label>
    <input type="hidden" name="MAX_FILE_SIZE" value="10000000" />  <!-- 10MB -->
    <input type="file" name="file" id="file" />
  <input  type="submit" value="提交"/>
</form>

解决方法检查过滤一下信息是否合法:
1、请求的方法(get/post/put...等),过滤掉不必要的请求方法。对于 php 检查$_SERVER[" REQUEST_METHOD"],对于java servlet检查  HttpServletRequest的getMethod()方法。 

2、referer头部,php采用$_SERVER[" HTTP_REFERER"], java servlet采用request.getHeader("Referer");
   对于合法表表单Referer头部不为空。

3、限制表单的大小:$_SERVER["CONTENT_LENGTH"], servlet采用request.getHeader("Content-Length");

4、限制请求的连接时间

辅助检查:
检查User-Agent: php $_SERVER['HTTP_USER_AGENT'], servlet采用:request.getHeader("User-Agent");

注意:
不能根据IP,因为IP可变,并且局域网多用户上网使用同一IP........

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值