flask的安全注意事項,如何防範XSS、CSRF、JSON安全

參考官方文檔:http://docs.jinkan.org/docs/flask/security.htmlhtml

一、xssflask

Flask 配置 Jinja2 自動轉義全部值,除非顯式地指明不轉義。這就排除了模板致使的全部 XSS 問題,可是你仍須要在其它的地方當心:api

  • 生成 HTML 而不使用 Jinja2
  • 在用戶提交的數據上調用了 Markup
  • 發送上傳的 HTML 文件,永遠不要這麼作,使用 Content-Disposition: attachment標頭來避免這個問題
  • 發送上傳的文本文件。一些瀏覽器使用基於開頭幾個字節的 content-type 猜想,因此用戶可能欺騙瀏覽器執行 HTML

另外一件很是重要的事情是未用引號包裹的屬性。雖然 Jinja2 能夠經過轉義 HTML 來保護你免受 XSS 問題,仍有一種狀況,它不能保護你: 屬性注入的 XSS 。爲了應對這種攻擊媒介,確保當在屬性中使用 Jinja 表達式時,始終用單引號或雙引號包裹屬性:瀏覽器

<a href="{{ href }}">the text</a> 

爲何這是必要的?由於若是你不這麼作,攻擊者能夠容易地注入自制的 JavaScript 處理器。譬如一個攻擊者能夠注入這段 HTML+JavaScript:cookie

onmouseover=alert(document.cookie)

當用戶鼠標通過這個連接, 會在警告窗口裏把 cookie 顯示給用戶。一個精明的攻擊者可能也會執行其它的 JavaScript 代碼,而不是把 cookie 顯示給用戶。 同 CSS 注入聯繫在一塊兒,攻擊者甚至使得元素填滿整個頁面,這樣用戶鼠標在頁面上的任何地方都會觸發攻擊。xss

二、csrfspa

flask是沒有抵抗csrf能力的,建議重要操做都要有一個一次性令牌csrf

相關文章
相關標籤/搜索