內行跟外行差在哪
2015 Sep 16 未分類
最近EC技術界 路老闆覺得還滿大條的是莫過於
啟元界功能表: 關於現有電子商務 網路購物平台的漏洞問題
https://blog.lupopi.com/?p=188
ibon有漏洞?所有票券都只要1塊錢
http://news.ltn.com.tw/news/life/breakingnews/1444898
借一下 啟元 那篇部落格的圖
這張圖不是直接把價錢放在 input 內
而是他直接把數量改成負值
結果 server 接到也沒檢查
就直接算出負值的價格
這張最經典
竟然把商品價格寫在 input 裡面
由客戶的瀏覽器來決定價格
這跟 Dell 螢幕賣 1元 簡直有異曲同工之妙
網頁會這樣寫的真的外行到不行
運費啊 商品價格啊
server 不是都有嘛?
幹嘛傳到 client 去
然後在從 client 接收算總金額?
最扯的是付費結帳
金流那邊回覆付款狀態
當然是要檢查當初買單的金額
跟付費金額有沒有一致
我猜他們是有檢查啦
但因為一開始加總就被改了
所以資料庫的總計金額也是1元
刷卡也是1元
所以從頭GG到尾
各大商城都中標 還不乏台灣最大店商Y!
實在是很慘
一般金流都會提供一把 private key
讓串接金流的網站 把所有要 post 到金流的參數做 hash
產生出一個 hash 過的字串
一起送到金流去
這種方法就可以避免掉 攻擊端(啟元) 的這種修改法
因為被竄改的數值送到金流去 經過 hash 後
會跟原本送出的 hash 字串不同
金流就會發現欄位被竄改了
至於 攻擊端 有沒有能力也把 hash 字串也重新產生?
有可能
因為我也有看過有智障直接把 hash key 放到 post form 裡面的
不過基本讓如果懂金流給的規格跟機制
一般來說是不會允許這種金額竄改的攻擊
除非串金流的人看不懂規格
很多人會覺得
一樣是購物網站
為什麼有人開價3萬
有的人開價30萬
差在哪裡?
就差在這裡
雖然我不能保證開30萬的一定不會有這種蠢問題
但是一分錢一分貨
你喜歡用便宜的
就要承擔這種風險
還有那種自己做EC的老闆
喜歡貪小便宜嘛
想請一個 '資深的' 來帶一堆 '資淺的'
以為一個有經驗 就會 '傳授' 給沒經驗的
殊不知 '資深的' 也不是做 EC 起家的
大家湊合在一起好像很歡樂
結果就是悲劇一場
另外就是個人小短評
張啟元這位小弟
其實並沒有很專業喔
他沒有受過什麼 資工/資管 的科班教育
但你看 坐在辦公室裡面有多少是 資工資管碩士博士
結果寫出來的東西還是被沒受過專業訓練
搓兩下就爆了
而且其實這個議題他也不是原創
我想他是看到之前高鐵線上買票的新聞
受到啟發
所以去找這方面的資訊來 try
才 try 出這麼多問題
這表示什麼?
這表示台灣做EC的人都沒有在注意這方面的網路安全議題
其實這都很老的議題了 大概跟 SQL Injection 一樣老了
(連商品價錢/運費都寫在表單裡面)
這是EC的悲哀
檯面上一些騙錢的服務
就算了
騙錢的服務
連服務本身的品質都是騙人的
一天到晚討論怎麼行銷
結果東西都是爛的
本末倒置
都要等到有問題了再來修