今天早上同業在傳這個臉書訊息
簡單來說就是有人要寫程式抓爬資料的時候,發現永豐金證券網頁登入後,會用js儲存使用者的身分證字號與密碼,且密碼是用明碼存。
這意思就是說你在登入狀態下,如果不幸你電腦有中木馬,他們就可以透過直接爬網頁的原始碼就直接取得你的帳密。也不用去破永豐金的資料庫就可以取得了。
你就想像是你開門進到家裡面,家裡有人,但門口直接產生一支你家的鑰匙,所以別人只要在這時候經過你的門口,就可以拿到你家鑰匙。大概是像這樣的意思。
然後有人就在這臉書底下問「為什麼之前測試的時候沒發現?」,這問題是每次有網站有資安問題被揭發的時候,很多人會想問的問題。在回答這個問題以前,我想先說一下我自己以前做網站企劃時的經驗。我不知道其他軟體公司內部的測試流程是怎麼安排。以以前在P家的經驗來說,新服務上線前的測試,會由企劃部全部的企劃一起上去測試,主要負責的企劃做彙整並在程式部門修改完畢後重新檢查確認都有過。
但即使是主要負責的企劃測試,他跟一般使用者最大的差異,只在於他比較熟整個網站的架構,所以在測試的時候知道要測得比較細。但著重的點還是在「功能使用」。
即使我自己會寫html code,測試的時候除非遇到css的問題會稍微幫忙找一下問題點。查css也就是我看code的極限,不然我也不會沒事開原始碼來看。
也就是網頁有些「問題」,並不是「一般使用功能的測試流程」能夠發現的。而是需要「有足夠經驗的相關工程師」去做檢查。
像是之前有購物網站曾被人家發現透過改js就可以跟改購物金額而且還可以完成購物流程的,就是很典型的「金額是否正確的判斷只寫在js但沒在後端做二次檢查」。但這個基本上要有點程式背景才能想到要怎麼測出這個漏洞。
很多人以為程式設計師都一定有資安概念,其實未必。一來「工程師」也已經分流分得很細。有前端,有後端,有MIS,大家主力能力都不同。二來現在能夠「會寫程式」跟以前比門檻也已經相對低,也就是你即使不是相關背景畢業,也有可能「會寫程式」,理論上相關背景(例如資工資管)畢業應該會對這類資安問題比較敏感(如果他上課都很認真的話)。但像半路出家而資安理論又沒特別有系統去學習的人,就很有可能會寫出犯下低級資安錯誤的網站。我自己本身如果不是因為長期合作的資深工程師會不吝惜分享他的經驗,我其實也不會有機會知道這種事。
「為什麼之前測試的時候沒發現?」
如果當時測試沒有額外使用資安軟體掃過,甚至也沒有比較懂資安的工程師從資安角度去做code review,那就會有這樣的狀況發生。坦白說永豐犯這樣的錯其實有點誇張(當然有人提就馬上修正是好的),因為他們畢竟是有資源的大公司。但你大概就可以想像,很多小公司專門接外包所開發的網站,資安都有很大的機會可能是有問題的。會不會遇到?真的就是運氣運氣了….
但這樣說,並不是要替這樣的錯誤「開脫」,只是希望讓大家理解,現在軟體開發的水很深,有很多的「專業」並不是身在其中的人就一定能完整擁有的。而我們能做的,常常也就只是「遇到就盡快改進」。
—-
基於這個部落格只是讓我個人做一些筆記,也沒有時間上來回覆留言,所以之後的文章就直接把留言關掉啦。之前的要一篇一篇關我也懶,就放著長草吧:p