看好你的门-客户端传数据(10)-不安全的HTML禁用元素

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

1、 简单说明

继续说故事,某一天产品经理策划了一个方案,要搞一个促销。一个用户最多只能用一次鸡蛋优惠券。

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

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

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

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

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

开发人员B:在html表单上做限制,买过一次以后就禁用;

开发人员A:这办法不错,只要修改html,不算版本升级;

开发经理:兄弟们,赶紧开发;

… (使用html进行元素禁用)

测试人员:测试好了,一个人只能用一次鸡蛋优惠券,用完就灰色了,我再也用不了了,达到目标。

开发经理:提交上线

2、 利用html进行元素禁用

使用了一次以后的页面,确认购买的按钮灰掉了。


<%@ 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>
    您已经使用一次<br>
    <input type="submit" value="确认购买" disabled="true"/>
    </form>
</body>
</html>

无论我怎么点,这个按钮都是灰色的。

3、 被攻击

诶呀,一不小心,又被攻击了…

1、 最简单的方法,比如用代理服务器拦截之后修改,直接让disabled=false 或者去掉这个属性;

2、 比如我们把这个页面保持下来,用审查元素功能找到 :disabled=true 修改元素属性,去掉这写代码,这样验证就失效了,再多用几次鸡蛋优惠券玩玩吧。。

4、 思考html上的元素禁用

1、 元素禁用好像现在用的不是很多,不过只要服务器采取了和客户端相同甚至更加严格的确认机制,这种应用就比较难被攻击;

2、 因为用户的输入可能带来各种各样的问题,这种方法能够将用户无意中的错误过滤掉,能够减少网络流量和服务器负担,因此,这种方法该用还是要用。

时间: 2024-10-11 05:49:34

看好你的门-客户端传数据(10)-不安全的HTML禁用元素的相关文章

看好你的门-客户端传数据(4)-利用浏览器调整http的referer

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 简单说明 在互联网中,大量的数据通过URL参数的方式进行传递,大部分的数据,是没有通过加密进行传输.在我所了解到的情况,大部分的数据是通过明码进行- 当然,现在大家都知道,URL参数,安全性不是特别高,于是http信息头(包含referer等属性)进入了大家的视野. Referer用来表明,浏览器向 WEB 服务器表明自己来自哪里. 2. 观点: 根据w3.org标准,http信息头完

看好你的门-客户端传数据(2)-URL参数

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 简单说明 应用程序通常以终端用户无法直接查看或者修改的方式向服务器传送数据.很多的时候,开发者都优先考虑实现基本效果,而很少去考虑我们所采用的传输机制能够确保数据在传输过程中不会被修改. 在互联网中,大量的数据通过URL参数的方式进行传递,大部分的数据,是没有通过加密进行传输.在我所了解到的情况,大部分的数据是通过明码进行- 2. 优点: 不用追踪用户会话中的数据,减少保持在服务器上的

看好你的门-客户端传数据(3)-http信息头

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考,请勿用与非法用途. 1. 简单说明 在互联网中,大量的数据通过URL参数的方式进行传递,大部分的数据,是没有通过加密进行传输.在我所了解到的情况,大部分的数据是通过明码进行- 当然,现在大家都知道,URL参数,安全性不是特别高,于是http信息头(包含referer等属性)进入了大家的视野. Referer用来表明,浏览器向 WEB 服务器表明自己来自哪里. 2. 观点: 不知道从什么时候起,

看好你的门-客户端传数据-用java修改referer

1.简单说明 Referer.origin用来表明,浏览器向WEB服务器表明自己来自哪里.但是就它本身而言,并非完全安全. 写一个例子,可以任意修改http信息头中的referer.origin 2.准备: 用httpClient4.0来具体实现 3.Java修改http信息头referer.origin的源代码 代码非常简单,就是修改了http头的referer.origin. 配套示例的jsp在:http://blog.csdn.net/ffm83/article/details/44095

在用UEditor往后台传数据写入数据库时,出现错误:从客户端(NewsContent=&quot;&lt;p&gt;&lt;img src=&quot;http://...&quot;)中检测到有潜在危险的 Request.。。。

解决办法: 把传数据的方式换了一下,加上 [ValidateInput(false)]就不报错了. 建议看看这个:http://www.360doc.com/content/10/0521/15/466494_28756529.shtml 觉得写得很好.

如何实现后台向前台传数据

这两天正在研究如何让后天主动向前台展现数据,只要后台有数据上传的时候就向前台上传(因为公司有个项目,硬件设备会不断的上传数据,服务端将接收到的数据向前台展示).在网上查了一下,下面将介绍一下其中的两种解决办法 一.WebSocket WebSocket 是web客户端和服务器之间新的通讯方式, 依然架构在HTTP协议之上.使用WebSocket连接, web应用程序可以执行实时的交互, 而不是以前的poll方式. WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的

Amazon MWS 上传数据 (一) 设置服务

Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一样,您还必须包括验证信息.SubmitFeed 操作可返回 FeedSubmissionId 的值,您可以使用该值,通过 GetFeedSubmissionList 操作,对上传数据状态进行定期检查. 如果亚马逊 MWS仍在处理请求,则 GetFeedSubmissionList 操作的 FeedP

使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图.下面就来看看本文实现的功能: Silverlight 与服务器利用Socket通讯,实时从服务器获取数据(本文中的数据是地理坐标),由于没有GPS,所以本文在服务器写了一个构造新坐标的函数(本文是一个三角函数),然后利用Timer组件,实时调用,得到新的坐标,并将新的坐标发送给客户端,客户端接收到发

uip UDP 服务器广播模式(客户端可以任意端口,并且主动向客户端发送数据)

目前移植uip,发现UDP 服务器模式下,必须指定本地端口以及客户端端口,否则只能讲客户端端口设置为0,才能接收任意端口的数据,但是无法发送数据,因为此时客户端端口设置为0了,我通过将原始数据包中的客户端端口保存下来,并且在发送的时候将客户端端口替换为指定的端口,发送完成之后又设置为0,这样就实现了向任意客户端端口发送数据. uip.c if(uip_udp_conn->lport != 0 && UDPBUF->destport == uip_udp_conn->lpo