申明:本文非筆者原創,原文轉載自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%84%E8%8C%83%E6%96%87%E6%A1%A3/2018-08-17-SDL-4-python%E5%AE%89%E5%85%A8%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83.md
python語言安全
本身要注意的有,一些危險函數,危險模塊的調用,主要是系統調用。這個如果調用一定要對輸入輸出做好過濾,以下是代碼中各種導致進行系統調用的方式。盡量避免。
-
避免各種情況導致系統調用
-
謹慎使用Eval
-
數據序列化
Web編程
對應Web編程中安全概念在python web框架中的實現。url跳轉,目錄遍歷,任意文件讀取也需要考慮在內。針對不同的框架也需要。
Flask 安全
- 使用Flask-Security
- 直接生成 HTML 而不通過使用Jinja2
- 不要在用戶提交的數據上調用Markup
- 使用 Content-Disposition: attachment 標頭去避免上傳html文件
- 防止CSRF,flask本身沒有實現該功能
Django 安全
可參考phithon的博客,有較多相關資料。
- 關閉DEBUG模式
- 關閉swagger調試
- 妥善保存SECRET_KEY
- 使用SecurityMiddleware
- 設置SECURE_HSTS_SECONDS開啟HSTS頭,強制HTTPS訪問
- 設置SECURE_CONTENT_TYPE_NOSNIFF輸出nosniff頭,防止類型混淆類漏洞
- 設置SECURE_BROWSER_XSS_FILTER輸出x-xss-protection頭,讓瀏覽器強制開啟XSS過濾
- 設置SECURE_SSL_REDIRECT讓HTTP的請求強制跳轉到HTTPS
- 設置SESSION_COOKIE_SECURE使Cookie為Secure,不允許在HTTP中傳輸
- 設置CSRF_COOKIE_SECURE使CSRF Token Cookie設置為Secure,不允許在HTTP中傳輸
- 設置CSRF_COOKIE_HTTPONLY為HTTP ONLY
- 設置X_FRAME_OPTIONS返回X-FRAME-OPTIONS: DENY頭,以防止被其他頁面作為框架加載導致ClickJacking
- 部署前運行安全性檢測 django-admin.py checksecure --settings=production_settings
審計工具
安裝使用方式較為簡單,所以不做介紹。