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