Python Tutorial 第五堂(2)表單與 CSRF
|
Python Tutorial 第五堂(1)使用模版系統 << 前情 目前你的
有沒有想過,如果在不同 App 的 練習 13:建立 URL 名稱空間與簡易表單在目前的 mysite/urls.py 檔案中,在
接下來,你就可以在模版中使用這個名稱空間設定,例如,修改 polls/index.html 模版:
接著要來建立一個簡易表單了,修改 polls/detail.html,如下包括 HTML 的
在 polls/views.py 中增加以下內容與修改
當然,我們必須建立 polls/results.html 模版檔案:
接著你可以試著連結網站,在上頭作些投票,你應該可以看到以下結果:
簡介 CSRF在練習 13 中看到了個 一個 CSRF 攻擊的情境範例會像是 …
瀏覽器遇到 對於 HTTP 請求,有些人會有 GET 不安全,而 POST 比較安全的錯誤觀念,乍看這個例子好像是如此,實際上,也可以透過 POST 來發動類似的請求。例如: <a href="https://www.harmless.com/" onclick="
var f = document.createElement('form');
f.style.display = 'none';
this.parentNode.appendChild(f);
f.method = 'POST';
f.action = 'https://www.example.com/account/destroy';
f.submit();
return false;">好康在這裡</a>
就算不點選,只要滑鼠略過圖也可以 … <img src="https://www.harmless.com/img" width="400" height="400" onmouseover="..." /> 就算沒有任何滑鼠操作,現在只要利用一些 JavaScript 寫些 Ajax 請求,都有可能讓這類攻擊發生 … 先前談過,CSRF 是利用 Web 應用程式在設計 HTTP 請求時,因為考量不周全造成的漏洞,因此,防範方式就是認真思考 HTTP 請求方法之使用。單就
(實際上要考量的不只有等幂性,還有請求方法是否安全(Safe),進一步地,在 REST 架構設計下,還有更多的 HTTP 請求方法(像是 PUT、DELETE 等)考量,可參考 重新認識HTTP請求方法。) 如果 GET 確實地應用於等冪操作,對於非 GET 請求,通常會用個安全代碼,在 Django 中,這可由
當你瀏覽表單時,
Django 應用程式接受請求時,必須同時在請求中找到這組安全代碼,從而確認請求是來自於同一站上的表單。 (這個例子並不單只是如何防範 CSRF,主要想表達的是,安全其實是現代設計應用程式時應主動納入的考量,現在有不少框架也將安全納為特色之一,讓開發者不用煩惱安全防護實作時的枝微末節。) |

Java 學習之路













