不要相信任何來自客戶端的輸入資料
重要Whitelist
Blacklist if you can’t whitelist
Sanitization
Avoid reflecting input back to a user
Encode all application data output
HTTPS for all
SSL
TLS
HSTS
Strict-Transport-Security
HTTP Method
HTTP Header
Content-Security-Policy
X-XSS-Protection
X-Frame-Options
X-Content-Type-Options
網站的回覆表頭帶有「Strict-Transport-Security」,該表頭會讓瀏覽器記得,該網站(正確說法是域名)有提供HTTPS安全連線,並於下次連線中強制使用HTTPS,注意是強制喔,不論是點進不帶有https的連結(例如:這個),或是你故意在網址列打入網址時使用http://為開頭,瀏覽器都會先強制轉換成https再送出請求
Sanitization
Avoid building Query strings from user input
Bind parameters for queries, not concatenate
Never expose session identifier
Protect session cookie with attribute
Set proper expiration date
Create a new session
after authenticating
when a user change privilege
ACK 反射攻擊
主要是利用 TCP 三向交握的機制來做攻擊,攻擊者將 SYN 訊息來源的 IP 位址修改成目標的 IP 位址,伺服器在接收到 SYN 訊息後會回傳一個 ACK 訊息給目標,這樣攻擊者就能比較有效的去隱藏攻擊的來源。
DNS 放大攻擊
DNS(Domain Name System)是用來將網域名稱跟 IP 位址互相映射的一個服務,當使用者輸入網址的時候,電腦就會先去傳送查詢的封包到 DNS 伺服器,然後接收對映的 IP開始後建立連線,一般來說回傳的封包因為包含查詢的結果,所以封包都會大於請求的封包,這種攻擊就稱為放大式攻擊,這種攻擊是由攻擊者先提出查詢請求,並在來源端修改成目標的 IP,讓放大後的查詢結果導向目標。
NTP 放大攻擊
NTP(Network Time Protocol)是用來使電腦時間同步化的一種協定,使用者可以透過協定與伺服器校正自身電腦的時間,攻擊者利用 monlist 這項功能的安全漏洞來取得最近與伺服器連接的電腦列表,並透過填入假的來源 IP 來將這份列表傳給目標來進行放大式攻擊。
SNMP 放大攻擊
SNMP(Simple Network Management Protocol)是目前網路中應用較為廣泛的網路管理協定,他提供了一套管理方式來監控和維護網路設備,其中一個管理的指令 GetBulk 是用來一次取得大量網管資訊庫的指令,與 NTP 放大攻擊相同,將來源 IP 更改為目標 IP 來進行攻擊。
TCP 連接洪水攻擊
利用三方交握的性質來進行攻擊,每台伺服器所能建立的連線是由一個連接表來記錄,這些連接的數量是有限制的,當連接的數量超過伺服器所能負擔的數量,就無法在與之後的使用者建立連線來提供服務。
SYN 洪水攻擊
利用三方交握的性質來進行攻擊,攻擊者對伺服器送出一個 SYN,在伺服器回傳 SYN + ACK 後不發送最後的 ACK ,讓這條連線處於空窗的狀態,隨著空窗的連線越來越多,能夠正常使用的部分也越來越少來達到阻斷攻擊的效果。
RST 洪水攻擊
在 TCP 連線要終止的時候,通常都是透過傳送 FIN 訊號進行四次揮手來終止,但是當兩邊其中一方有出現異常狀態時,無法進行完整的四次揮手時就會傳送 RST 來將連線強制中斷,攻擊者趁著目標與他人建立連線時,模仿目標來傳送 RST 來阻礙目標使用其他服務。
THC SSL DoS 攻擊
在進行 SSL 連線時都先需要進行 SSL 握手,雙方交換加密金鑰,來進行身分認證,在正常的情況下這個過程只需要執行一次,THC SSL DoS 攻擊是利用 Renegotiation 選項去重複執行這個協商金鑰過程,讓伺服器因為要運算金鑰而耗費大量資源。
LAND 攻擊
攻擊者發送一個來源 IP 為目標 IP 位址封包給目標,這樣目標會將這個封包回傳給自己形成無窮迴圈,最終耗盡資源。