安全意識和安全思維是什麼,如何培養?

我之前是搞開發的,現在轉行搞移動安全。老大說安全意識很重要,我缺乏安全意識和安全思維,請問所謂的安全意識和安全思維指的是什麼,如何培養(包括移動安全和web安全,是通用的嗎)


安全意識主要有兩點:
1,懷疑一切(Trust no one)
比如,該不該相信用戶的輸入一定是正確的?
還有,老闆半夜發email或者簡訊要伺服器的密碼,這個人真的是老闆么?
另外,郵箱收到一封公司xx部門的郵件,裡面的附件是個pdf文件,名字叫xxx詳細內容.pdf,是否應該直接打開?
最後:嗯,這麼多大公司都在用openssl,一定很安全沒問題...

2.如果我這麼做會發生什麼?(What if...)
通過輸入一些不符合格式的數據,或者更改程序運行的流程,甚至任何事情的流程,都會有意想不到的效果。
比如:
在管理頁面輸入錯誤密碼,伺服器把瀏覽器301跳轉到錯誤頁面。如果我把伺服器發來的跳轉指令丟掉,會發生什麼?
我擦,居然可以不用密碼登錄管理頁面?還能執行操作?

還有最簡單的:
xxx.php?id=123
123後面加個引號,尼瑪,頁面出錯了?

安全思維:
時刻進行的風險控制與管理(Risk management)

即使你做到了上面的兩條,也無法做到對事情的絕對控制,比如openssl的問題,作為個人或者小公司沒有能力對openssl的bug進行審計,即使有能力審計也無法保證100%挖出所有bug,所以既然那麼多大公司都選擇openssl,那麼還是說明這套程序不太差,但是風險還是存在的。

所以很重要的一個安全意識就是對所有可能發生的事情的概率和後果做一個預測,並且制定預案減少事件發生時的損失(mitigation plan)。

比如,App開發者需要考慮的安全風險有:
假如別人把這個app逆向了,或者獲取了全部的源碼,獲得的信息是否能進一步滲透。
比如app里是否存了某關鍵服務的key,是否能調用某不受限制的介面等等,介面的ip和ip段是否存在有漏洞的伺服器,如果對方侵入了這個app後端的伺服器是否可以對內網進行進一步滲透等等……
有了這種思路,你就會對每一個風險可能產生的損害進行控制,比如把這app的伺服器放到單獨的網段,不和公司內網相連,把提供app服務的程序放到chroot jail里,增強伺服器審計等等。

最後說一句,作為一個把這幾條應用到現實社會的人,我活的很累……


口袋裡還有10塊,選擇買一盒三隻裝的傑士邦
而不是一份外賣,這叫安全意識。

口袋裡還有10塊,用花唄去買一盒岡本,然後10塊點個外賣,這叫安全思維。

如何培養?
先開個螞蟻花唄再說唄。


推薦閱讀:

TAG:安全 | 思維方式 | 移動安全 | Web安全測試 |