【網絡安全】如何使用 Anti-CSRF Tokens 來加強你的網站操作

在進行網站掃瞄的時候,我們經常發現一個項目名為「Absence of Anti-CSRF Tokens」。這究竟表示我們的網站欠了什麼內容,這內容對網站有什麼影響,我們又如何解決這問題呢?

Anti-CSRF Tokens 主要用於防止跨站點請求偽造的攻擊(CSRF/XSRF)。我們可以嘗試從 CSRFCSRF Tokens 的基礎知識出發——包括它的產生辦法和驗證過程,來了解針對特定表單及請求的 CSRF 保護,最後知道 Anti-CSRF Tokens 在防止跨站點請求偽造的攻擊發揮的作用。

Anti-CSRF Tokens 是 Web 應用程序中使用的唯一值,用於防止 CSRF 攻擊。這是一種客戶末端的攻擊,可用作把用戶重定向到惡意網站、竊取敏感信息,甚至在用戶會話中執行其他的操作。

基本來說,Anti-CSRF Tokens 就是向用戶的瀏覽器提供一條信息(Tokens),並檢查瀏覽器有否將其發送回去。透過這種操作,這信息必須是唯一的,並且不可能被第三方猜測,或者仿造。因此,當應用程序要繼續運作,就必須驗證這唯一的信息。換言之,只有原始用戶可以在經過身份驗證的會話中(Authenticated Session)發送請求( Request)。

舉個例子,我們在一個社交媒體網絡應用網站上,當用戶填寫 HTML 表格進行發佈消息,當他提出確認,如按確認按鈕,瀏覽器相對會發送一個 POST 請求。如果當時用戶正在登錄,並且攻擊者對這個請求有一定了解,他就可以使用這個請求進行修改,這就是 CSRF 攻擊的基本操作。如將 HTML form message 由「Content:
」改為「Content: ,結果 Post Request 亦會由「subject=subject&content=content」變成「subject=Buy my product!&content=To buy my product, visit this site: Anti-CSRF Tokens.biz」,並進行其他操作比方說是廣告發佈。

假如網站採用了 Anti-CSRF Tokens,網絡服務器則會在用戶登錄後立即在網絡瀏覽器的會話 Cookie 中設置 Tokens,所有表單提交都包含一個包含 Tokens 的隱藏字段從而完全消除 CSRF 的漏洞。

大家應該也聽過 Depth in Defense 的說法。簡單來說,就是不要單靠一道門用作防禦,網絡安全也是同一道理。換言之,我們需將 Anti-CSRF Tokens 和其他方法相結合,以提供最有效的防禦作用。當真的發生事故,一道門失手了,也有另一道門可以發揮作用。例如:你可以使用自定義標頭來驗證Ajax請求。 此技術之所以有效也是基於同源策略,意即只能使用來自同源的 JavaScript 去添加請求標頭,才能完成任務!

最後,雖然 Anti-CSRF Tokens 有著它的作用,但它僅僅是防禦 CSRF 攻擊的最安全方法之一,在某些情況下,攻擊者仍然是有方法繞過它的。為了網站的安全,我們更要保持可靠的 Web 應用程序的安全性,並且檢查 Web 應用程序是否存在其他類型的漏洞。

往後將繼續透過不同文章,分享保持可靠的 Web 應用程序的安全性和檢查其他漏洞的要訣。

網絡安全在很多方面還需要注意,如有任何疑問歡迎加入我們的 Cybersec Infohub 計劃,讓行業裏的網絡安全專家為您解決,如果您懷疑自己或公司的電腦被駭或有可疑的行為,亦請盡快聯絡網絡安全專家求助。

更多文章