您的位置:首页 > Web前端 > HTML

看好你的门-客户端传数据(8)-不安全的HTML表单限制

2015-03-06 17:05 253 查看
首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。

1、 简单说明

先说故事,某一天产品经理策划了一个方案,要搞一个促销。一个用户最多可以买9个鸡蛋。一个鸡蛋一分钱,好事情。

开发人员需要对系统进行修改和调整。

让我们脑补一下,传统行业搞互联网电商的场景:

产品经理:赶快改,赶快上,赶快搞活动

运维经理:版本升级,提交上线评估报告,风险测试报告,系统测试报告,各位负责领导签字文件;

开发人员A:靠,老子一早从9点干到晚上9点,还要老子去写那么多报告,让我想想有那么好办法…

开发人员B:我们把验证放在HTML页面吧,直接用html的长度限制,这样就不用重启服务,也不算版本升级

开发经理:人才呀,就这样干

… (使用长度限制)

测试人员:测试好了,一个人只能买0-9个鸡蛋,输入10或者其他超过9的数据都被限制了;

开发经理:提交上线



2、 在HTML表单进行长度限制的例子

[code]
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>看好你的门-阿饭同学 </title>
</head>
<body>
    <form action="aShopPrice.action" method="post" name="form1">
    商品:鸡蛋 <br>
    价格:0.01元 <br>
    数量(每人最多购买9个):<input type="text" name="quantity" maxlength="1" /> 
    <br>
    <input type="submit" value="确认购买" />    
    </form>
</body>
</html>


只能输入一个字符,我也试过,确实如此呢。

3、 被攻击

要攻击这种情况,非常的轻松。

1、 利用拦截提交的表单,在中间输入任意数字。 最简单实用;

2、 去掉页面中的maxlength=”1”限制,这种方法通俗易懂。比如用chrome浏览器,点击“审查元素”,找到maxlength=”1”,然后修改属性,去掉maxlength=”1”。然后刷新下页面。你回发现,你无论输入多长的数字都可以…. 不知道购买100万个鸡蛋,是不是会让这个公司破产……

4、 反思中的观察和步骤

1、 如果页面中采用了maxlength或者其他的类似的限制,那么提交大于这个长度但是格式合法的数据;

2、 如果服务端接收了这个数据,那么可以推断出服务器没有采取客户端确认的机制;

3、 利用这个机制并发现是否存在其他的漏洞和缺陷
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: