看好你的门-客户端传数据(1)-不安全的隐藏表单字段

来源:互联网 发布:汉服复原小组淘宝 编辑:程序博客网 时间:2024/05/18 18:16

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

- 1、 简单说明

应用程序通常以终端用户无法直接查看或者修改的方式向服务器传送数据。很多的时候,开发者都优先考虑实现基本效果,而很少去考虑我们所采用的传输机制能够确保数据在传输过程中不会被修改。
如果一个特殊的数据,由服务器指定,然后想客户端输出这个值,最后还要把这个值传回到服务器进行处理。很多的时候,我们就直接作为一个参数,直接处理了,比如一个产品的价格,假设是华为手机P7,商品名称和价格都是从服务器中获取;然后显示给用户看;用户购买了手机之后,这个名称和价格,还要传回服务器。

- 2、 优点:

  • 不用追踪用户会话中的数据,减少保持在服务器上的数据,提高服务器处理的性能;
  • 大型系统中,都会使用负载均衡,还能降低负载均衡设备的压力;
  • 降低其他组件的复杂性;
  • 其他优点…

- 3、 隐藏表单字段

隐藏表单字段是实现一种数据来回传输的好方法,很多很多年,我第一次接触隐藏字段,用起来真的很方便。
它是一种表面上看起来无法修改,通过客户端传送数据的常用机制。因为隐藏了,所以用户不会看到这些数据,直到有一天,有人踹开了你的门…

一些购物网站也是这样做的,通过隐藏字段来保持商品的价格。以前这种做法很常见,现在是否消失,我也不确定…

- 4、 隐藏表单字段源代码

hide_price.jsp

<%@ 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">    商品:华为P7 <br>    价格:2199元 <br>    数量:<input type="text" name="quantity" > <br>    <input type="hidden" name="price" value="2199" >    <input type="submit" value="确认购买" />        </form></body></html>

- 5、 被攻击

虽然价格字段没有显示在屏幕上,看起来用户也不能去修改。 但是客户端的一切最终操作都是用户控制,用户编辑这个价格就可以解除这个限制。
1、 最简单的方法,保存这个html页面的源代码,然后编辑 中的value字段;然后用浏览器打开这个页面,然后进行购买。
2、 通过拦截服务器对数据直接进行修改。

0 0