網路安全-CSRF-跨站偽裝請求

CSRF 情況:

  1. 瀏覽器如果發送請求時,如果在瀏覽器的cookie紀錄裡面有找到目標Domain的對應的cookie,就會將這個cookie一同送給server做請求

  2. 但是如果使用者在A網站已經認證完,且session尚未timeout

  3. 這個如果使用者在瀏覽B網站時,B網站自動發送一個請求給A網站

  4. A網站會認為是使用者自己發送的

  5. 如此可以達到偽裝使用者在A網站的所有操作

對策:

  1. use GET and POST appropriately

    就是正確的使用Get和Post, 如果是獲取資料的地方就使用GET, 需要更新或是新增的地方就使用POST

  2. a security token in non-GET requests will protect your application from CSRF.

    如果是GET以外的行為例如: POST, 這時就必需使用一個認證碼來驗證次動作

    實作的方法通常就是, 當使用者獲取一個更新操作或是新增頁面的時候, Server會自動產生一個驗證碼(security token)並將它同時 和這個更新操作或是新增頁面同時送到使用者的瀏覽器

    使用者要進行新增或是更新時會POST資料到Server,同時POST的資料裡面會跟隨這個驗證碼(security token)一起送到Server, 所以Server就根據這個驗證碼的正確與否來決定這個POST的行為是正確的還是偽造的

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax