前段時(shí)間讀了《白帽子講Web安全》,很不錯(cuò)的一本安全書籍,適合我這種安全小白。這篇文章是對客戶端腳本部分的總結(jié)。
安全本質(zhì)
安全的本質(zhì)是信任。安全方案設(shè)計(jì)的基礎(chǔ)是建立在信任之上,我們必須信任某些東西,必須有一些基本的假設(shè)。從另外一個(gè)方面講,如果我們作為決策依據(jù)的條件被打破,被繞過,那么就會導(dǎo)致安全假設(shè)的前提不再可靠。
瀏覽器安全
同源策略
相同協(xié)議,域名,子域名,端口都相同才會被認(rèn)為是同源。限制了來自不同源的腳本或者document對當(dāng)前document的修改。
同源策略是瀏覽器安全的基礎(chǔ)??梢韵胂笕绻麤]了同源策略,那么我通過腳本直接修改任何一個(gè)網(wǎng)站的東西,這不是亂套了嗎?
注意有一些標(biāo)簽不收同源策略的影響,比如link,script,img,這些標(biāo)簽的src屬性相當(dāng)于發(fā)起了一次get請求。
XSS攻擊
說白了就是把一段javascript腳本注入到輸出的html中,使得渲染html的時(shí)候,解析了javascript腳本并且運(yùn)行攻擊代碼。
XSS攻擊是非常常見的一種攻擊方式,我自己就在我們官網(wǎng)找到了一處反射XSS漏洞(直接把用戶輸入的搜索字符串打印到了搜索歷史中,所以我如果輸入搜索<script>alert(1)</script>的就會彈出1)。
XSS攻擊可以干啥,還是用上面我們官網(wǎng)的例子。如果我不是執(zhí)行alert(1),而是發(fā)送一個(gè)刪除帖子的API請求,那么只要點(diǎn)了這個(gè)鏈接那么這個(gè)用戶發(fā)表過的文章就都被刪除了,甚至我可以給他的好友群發(fā)站內(nèi)信把我構(gòu)造的鏈接加上,那么每一個(gè)打開這個(gè)鏈接用戶都會中招,然后又會給他們的好友再群發(fā)站內(nèi)信,這就構(gòu)造了一個(gè)XSS蠕蟲!所以千萬不要低估XSS的危害。
如何防止XSS攻擊
http-only
嚴(yán)格來說http-only是防止被XSS攻擊之后的cookie劫持的問題。加了http-only之后的cookie不能被javascript訪問到。給關(guān)鍵業(yè)務(wù)和敏感信息的cookie添加http-only是業(yè)界通用的處理方式
輸入/輸出檢查
輸入檢查在不同的語境下面有不同的方式。比如登錄框只限制手機(jī)號碼,搜索框只允許出現(xiàn)英文中文字母,社區(qū)評論的富文本要稍微復(fù)雜一些。
變量輸出到HTLM的時(shí)候要使用HtmlEncode編碼轉(zhuǎn)一遍,我上面講的那個(gè)XSS問題就可以通過這個(gè)解決。