web开发中的安全问题
web开发中很多东西由前段来负责判断,比如常见的邮箱 电话号码,前端判断到不是一个正确的格式,在你点击提交时候提示你格式填错了,然后不请求后端php,直到你填写正确的格式为止。这种其实可以修改js或者干脆用python里面的requests之类的http请求库直接请求接口,那么可以成功把错误的东西提交给后端进而存储到数据库了,那么这种就不太好了。
如果系统不重要,用的人不多,可以勉强放过这一点。
但有的很重要的系统,尤其涉及到金钱的接口,后端必须也做好验证。否则有人利用漏洞来破坏规则,造成金钱的损失和错误。
举个例子,以下是一个对运单费用的修改,系统的业务需求是在运单创建但还没被调度这段时间,这个费用可以修改的,如果运单是已调度状态,则不允许修改这个费用。
系统实现这个是前端按照php的返回,判断一个运单的状态是已调度状态,就用js把这个输入框设置为disabled,此时正常用浏览器是这个输入框输入不了任何东西,但如果懂点前端的,可以用f12定位到元素,把disabled去掉,这样就可以修改费用了。
或者用浏览器对点击保存这个按钮抓个包,用requests按照抓包得到的接口和参数的格式请求php接口,你可以把相关字段的费用数字修改成别的,这样就能绕过前端对你的限制了。
抓包得到的是一个base64格式的,很容易看出特点来是个base64。把这段抓到的base64解码后就可以看到一个明文json了,对这个json修改数字后再用base64加密,再请求接口就可以成功修改费用了。
抓包得到参数:
eyJvcEZyb20iOiIxIiwidXNlck5hbWUiOiJhZG1pbiIsInBzZF92IjoiMyIsInN1cHBsaWVyQ29tcGFueSI6IjUxIiwicHJlZGljdEFycml2ZURhdGUiOiIyMDE2LTEwLTIwIiwiZHJpdmVySUQiOiIzMiIsInZlaGljbGVJRCI6IjE0IiwiZGlzcGF0Y2hOTyI6Iuiwg+W6puWPt+W+iOmVv+W+iOW+iOmVv+eahGFhYWExMTExMTEiLCJkaXNwYXRjaENoYXJnZXMiOiI1LjAwIiwicGFja0NoYXJnZXMiOiIwLjAwIiwiaGFuZGxpbmdDaGFyZ2VzIjoiMi4yMiIsImZvcmtsaWZ0Q2hhcmdlcyI6IjAuMDAiLCJvdGhlckNoYXJnZXMiOiI0LjQ0Iiwic2V0dGxlVHlwZSI6IjMiLCJzZXR0bGVTdGF0dXMiOiIwIiwiZGlzcGF0Y2hUb3RhbENoYXJnZXMiOiIxMS42NiIsInBhaWREaXNwYXRjaFRvdGFsQ2hhcmdlcyI6IjYuNjYiLCJyZWNlaXZhYmxlS2lja2JhY2siOiI5Ljk5IiwicGFpZEtpY2tiYWNrIjoiOC4wMCIsInNldHRsZXIiOiIxIiwicmVtYXJrIjoi5aSH5rOo5LiL5ZOIIiwibWV0aG9kIjoibW9kaWZ5X2Rpc3BhdGNoIiwid2F5YmlsbElEIjoiMTEyOSJ9
base64解码后得到的参数(假设为value):
{"opFrom":"1","userName":"admin","psd_v":"3","supplierCompany":"51","predictArriveDate":"2016-10-20","driverID":"32","vehicleID":"14","dispatchNO":"调度号很长很很长的aaaa111111","dispatchCharges":"5.00","packCharges":"0.00","handlingCharges":"2.22","forkliftCharges":"0.00","otherCharges":"4.44","settleType":"3","settleStatus":"0","dispatchTotalCharges":"11.66","paidDispatchTotalCharges":"6.66","receivableKickback":"9.99","paidKickback":"8.00","settler":"1","remark":"备注下哈","method":"modify_dispatch","waybillID":"1129"}
python代码
import requests,base64
print requests.psot(url,data=base64.b64encode(value)).content
可以看到返回errcode 0,说明成功了,再去网页看下这个运单,结果费用也可以看到是被修改了。
这样最后在月度统计费用时候,会造成错误。

web开发中的安全问题的更多相关文章
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- WEB开发中的字符集和编码
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- Web 开发中很实用的10个效果
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- Web开发中管理ipad屏幕的方向变化
Web开发中,我们会遇到在手机垂直或水平视角时展示不同状态的情况.下面我来总结一下检测移动设备方向变化的一些方法. 1 使用javascript 直接看代码: <script type=&quo ...
- 今日推荐:10款在 Web 开发中很有用的占位图片服务
设计网站时,将要使用的图像在一开始通常还不存在,这个时候布局是最重要的.然而,图像的尺寸通常是预先设置,实用一些占位图像可以帮助我们更好地预览和分析布局. 如今,有免费的占位图片自动生成工具可以使用, ...
- Web 开发中应用 HTML5 技术的10个实例教程
HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...
- Redis在WEB开发中的应用与实践
Redis在WEB开发中的应用与实践 一.Redis概述: Redis是一个功能强大.性能高效的开源数据结构服务器,Redis最典型的应用是NoSQL.但事实上Redis除了作为NoSQL数据库使用之 ...
- Web开发中的主要概念
一.Web开发中的主要概念1.静态资源:一成不变的.html.js.css2.动态资源:JavaWeb.输出或产生静态资源.(用户用浏览器看到的页面永远都是静态资源) 3.JavaEE:十三种技术的集 ...
随机推荐
- 利用Django中的url方法实现地址动态拼接自动生成超链接地址
目标 建立一个图书列表页面,显示图书名列表,并实现点击书名跳转到图书详细页面,显示图书详细信息. URL方法简介 功能:返回一个绝对路径的引用(不包含域名的URL):该引用匹配一个给定的视图函数和 一 ...
- C++11 随机数
C++11带来诸多特性,random就是其一. 随机数由生成器和分布器结合产生 生成器generator:能够产生离散的等可能分布数值(需要种子,不然每次生存的随机数都一样) 分布器distribut ...
- Python获取时间范围内日期列表和周列表的函数
1.获取日期列表 # -*- coding=utf-8 -*- import datetime def dateRange(beginDate, endDate): dates = [] dt = d ...
- 【Unity笔记】UGUI的Image、RawImage控件
Image控件只能使用Sprite图片,RawImage通常使用Texture类型图片.项目设为2D模式后导入的图片Texture Type会自动转为Sprite. 没有选择源图片时,可以只选择颜色. ...
- 【Unity笔记】常用插件
记录一些常见插件,随时补充. iTween动画插件 原理:插值法,给出初始值和终点值,自动算出中间值. DoTween Tween动画 Playmaker $45 Playmaker由第三方软件商Hu ...
- C语言 · 友好数
算法训练 友好数 时间限制:1.0s 内存限制:256.0MB 问题描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的.例如: 9的约数和有:1 ...
- win10系统中UserManager 总是被禁用怎么解决?
RT,也就是提示win10开始菜单和cortana无法工作.升级win10后一直被这个问题困扰,论坛也见有人发帖求助这类问题,百度了方法打开任务管理器进入服务更改User Manager启动类型为自动 ...
- javascript中全局变量的定义
首先确实简单,在js脚本的函数外面使用. 但是要注意点: 不能写到jquery的框框代码里面,之前粗心放到$(function(){ })里面去了. <script type="tex ...
- 定制LNMP的RPM包
自动化部署必备技能—定制化RPM包 回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. ...
- Juint测试
添加"Juint测试"组件: 之后不用写在main方法里面便可以直接测试: