第九週的作業只做到「利用 Session 實作登入機制」,而這一週要把後續的影片都看完,並且把留言板的資安漏洞給修掉。
在修掉這些漏洞之前,你可以試試看入侵自己所寫的留言板,體驗一下當駭客的感覺。接著就是要把這些漏洞給修掉,包括:
- 密碼沒有經過 hash
- SQL Injection
- XSS
把漏洞修補完以後,請幫這個留言板加上新功能:身份系統與管理後台。一共有三種不同的身份,每個人只會有一個身份,不會同時具有兩種以上的身份:
- 管理員(可以新增留言,且編輯與刪除自己的留言,也可以刪除任意留言)
- 一般使用者(可以新增留言,且編輯與刪除自己的留言)
- 遭停權使用者(不能新增留言,但是可以編輯與刪除自己的留言)
你需要新增一個只有管理員進得去的後台頁面,在那邊可以看到留言板的所有使用者,而管理員可以調整使用者的身份。
提示 #1
可以在 users table 裡面新增一個叫做 roleId 的欄位 並且新增一個 roles 的 table 存放這三種身份這是一個要靠你自己獨立完成的作業,我們只會提供設計稿還有範例。這個部落格需要有以下功能:
- 要有登入機制,讓管理員能夠登入到管理後台
- 身為一個管理員,要能夠新增文章
- 身為一個管理員,要能夠編輯文章
- 身為一個管理員,要能夠刪除文章
- 身為一個管理員,新增文章時要有標題以及內文(如果有時間的話,可以去串 CKEditor)
- 身為一個訪客,在首頁要能看到最新的五篇文章
- 身為一個訪客,可以從導覽列點入:文章列表,並看到所有文章
要怎麼建置資料庫,要怎麼設計程式碼,這都是你可以自己決定的,那就加油囉!
- 請說明雜湊跟加密的差別在哪裡,為什麼密碼要雜湊過後才存入資料庫
include
、require
、include_once
、require_once
的差別- 請說明 SQL Injection 的攻擊原理以及防範方法
- 請說明 XSS 的攻擊原理以及防範方法
- 請說明 CSRF 的攻擊原理以及防範方法
請將答案寫在 hw3.md。