跨域提交表单攻击
2014-08-29 11:28
706 查看
原理:对于大多数服务器,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........
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........
相关文章推荐
- js跨域提交表单【详细教程,包解决】
- PHP防止跨站表单提交与同站跨页伪造表单的攻击
- PHP防止跨站表单提交与同站跨页伪造表单的攻击
- http模拟from表单提交,进行跨域请求和上传资源
- JSONP跨域提交表单
- php实现跨域提交form表单的方法【2种方法】
- 跨域表单提交状态的变相判断代码
- 使用jQuery实现跨域提交表单数据
- PHP-Yii框架下提交表单form防止csrf攻击
- jquery来跨域提交表单
- JS工具函数封装:使用隐藏iframe实现跨域表单提交
- jquery下异步提交表单 异步跨域提交表单
- jquery mobile + html5 手机app表单跨域提交实例(手机app开发html5 juqery moblie phonegap系列一)
- javascript 跨域POST 使用form表单 获取提交返回内容的方法
- jquery下异步提交表单 异步跨域提交表单
- 防止 本地 提交 表单 跨域
- php实现跨域提交form表单的方法【2种方法】
- Jquery Jsonp跨域提交表单获取返回数据
- 通过跨域提交表单的非法访问
- PHP防止跨域提交表单