制作安全网站的checklist
生活随笔
收集整理的這篇文章主要介紹了
制作安全网站的checklist
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原作者charlee、原始鏈接
http://tech.idv2.com/2008/04/19/secure-website-checklist/
?
fcicq最近在IPA上看到一篇安全相關(guān)的文章,它的最末尾有個(gè)checklist,于是催我把它翻譯了。前幾天比較忙,周末沒(méi)什么事兒了,就翻譯一下吧。
?
原文的標(biāo)題是如何讓網(wǎng)站更安全。這里僅翻譯文章最后的一個(gè)checklist。
?
2008/4/20更新:fcicq倒是神速啊,馬上就把具體的應(yīng)用策略扔出來(lái)了?
?
參考:PHP 實(shí)踐 Security Checklist
?
標(biāo)有 (*) 的檢查項(xiàng)目表示該項(xiàng)是針對(duì)相關(guān)問(wèn)題的根本解決方法,應(yīng)當(dāng)盡最大努力去完成這些內(nèi)容。未標(biāo) (*) 的項(xiàng)目,表示該項(xiàng)并不能完全消除安全隱患,只是說(shuō)通過(guò)這種方法可以避免發(fā)生安全問(wèn)題。最后一條似乎沒(méi)什么意思,不翻譯了。
- SQL注射
- (*) 在組合SQL語(yǔ)句時(shí)要使用SQL變量綁定功能
- (*) 如果數(shù)據(jù)庫(kù)不提供變量綁定,那么需要對(duì)構(gòu)成SQL的所有變量進(jìn)行轉(zhuǎn)義
- 不要將錯(cuò)誤信息原封不動(dòng)地顯示在瀏覽器中。
- 為訪問(wèn)數(shù)據(jù)庫(kù)的用戶(hù)設(shè)置適當(dāng)?shù)臋?quán)限。
- 操作系統(tǒng)命令行注射
- (*) 避免使用能啟動(dòng)shell命令的語(yǔ)言
- 使用的語(yǔ)言如果允許啟動(dòng)shell命令,則需要對(duì)該功能的參數(shù)種的所有變量進(jìn)行檢查,確保只包含合法的操作
- 不檢查路徑名參數(shù)/目錄遍歷
- (*) 不要將外部傳進(jìn)來(lái)的參數(shù)直接作為文件名來(lái)使用
- (*) 將打開(kāi)文件的操作限制在固定的目錄中,并禁止文件名中包含路徑
- 為Web服務(wù)器上的文件設(shè)置正確的訪問(wèn)權(quán)限
- 檢查文件名
- 會(huì)話管理的問(wèn)題
- (*) 用難以推測(cè)的內(nèi)容作為會(huì)話ID
- (*) 不要在URL中保存會(huì)話ID
- (*) 為https協(xié)議中使用的cookie設(shè)置secure屬性
- (*) 登錄成功后生成新的會(huì)話
- (*) 登錄成功后,在會(huì)話ID之外再生成一個(gè)秘密信息,每次訪問(wèn)頁(yè)面時(shí)都檢查之
- 不使用固定值作為會(huì)話ID
- 將會(huì)話ID保存到Cookie中時(shí),要設(shè)置有效期限
- 跨站腳本攻擊(XSS)
- 不允許輸入HTML內(nèi)容時(shí)的解決方法
- (*) 輸出到頁(yè)面上的所有內(nèi)容都要轉(zhuǎn)義
- (*) 輸出URL時(shí)僅允許以“http://”或“https://”開(kāi)頭的URL
- (*) 不要?jiǎng)討B(tài)生成<script>...</script>的內(nèi)容
- (*) 不要從外部網(wǎng)站讀入樣式表
- 檢查輸入內(nèi)容
- 允許輸入HTML內(nèi)容時(shí)的解決方法
- (*) 解析輸入的HTML內(nèi)容,生成解析樹(shù),然后提取其中的非腳本部分
- 使用腳本刪除輸入的HTML內(nèi)容中的相關(guān)字符串
- 通用解決方法
- (*) 應(yīng)答的HTTP頭重指定Content-Type的charset屬性
- 為避免Cookie情報(bào)泄漏,應(yīng)禁止Trace方法,并對(duì)所有Cookie設(shè)置HttpOnly屬性
- 不允許輸入HTML內(nèi)容時(shí)的解決方法
- 跨站請(qǐng)求偽造(CSRF)
- (*) 所有頁(yè)面都通過(guò)POST來(lái)訪問(wèn),在前一頁(yè)面的hidden中隨機(jī)生成一個(gè)信息,提交后的頁(yè)面檢查該信息,正確時(shí)才予以執(zhí)行
- (*) 執(zhí)行業(yè)務(wù)之前再次要求輸入密碼
- (*) 確認(rèn)Referer是否正確,只有正確時(shí)才執(zhí)行
- 執(zhí)行重要操作時(shí),向預(yù)先設(shè)置的郵件地址中發(fā)送郵件
- HTTP頭注射
- (*) 不直接輸出HTTP頭,而使用運(yùn)行環(huán)境提供的頭信息輸出API
- (*) 無(wú)法使用API時(shí),要禁止輸入的頭信息中的換行
- 刪除所有外部輸入中的換行
- 郵件盜用(通過(guò)某種手段使郵件發(fā)送到攻擊者指定的地址)
- (*) 不使用外部參數(shù)作為郵件頭信息
- 必須用外部參數(shù)設(shè)置頭信息時(shí),要?jiǎng)h除其中的危險(xiǎn)字符。
總結(jié)
以上是生活随笔為你收集整理的制作安全网站的checklist的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何用C#动态编译、执行代码
- 下一篇: 当着父兄的面露胸给孩子喂奶合适吗?[已扎