一、常見的web安全及防護原理
1.sql注入原理
就是通過把sql命令插入到web表單遞交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。
防護,總的來說有以下幾點:
1、永遠不要信任使用者的輸入,要對使用者的輸入進行校驗,可以通過正規表示式,或限制長度,對單引號雙“–”進行轉換等。
2、永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢存取。
3、永遠不要使用管理員許可權進行資料庫連線,為每個應用使用單獨的許可權有限的資料庫連線。
4、不要把機密資訊明文存放,請加密或者hash掉密碼和敏感的資訊。
2. XSS原理及防範
XSS(cross-site scripting)攻擊指的是攻擊者往Web頁面裡插入惡意html標籤或者javascript程式碼。比如:攻擊者在qq中傳送一個看似安全的連結,騙取使用者點選之後,竊取cookie中的使用者私密資訊;或者攻擊者在論壇中加一個惡意表單,當使用者提交表單的時候,卻把資訊傳送到攻擊者的伺服器中,而不是使用者原本以為信任的站點。
3.XSS防範方法
首先程式碼裡對使用者輸入的地方和變數都需要仔細檢查長度和對“<”,”>” ,”;”,” ` “等字元做過濾;其次任何內容寫到頁面之前都必須加以encode,避免不小心把html tag弄出來。至少可以堵住超過一半的XSS攻擊。
首先,避免直接在cookie中洩漏使用者隱私,例如email、密碼等等。
其次,通過使用cookie和系統ip繫結來降低cookie洩漏後的危險。這樣攻擊者得到的cookie沒有實際價值,不可能拿來重放。
如果網站不需要在瀏覽器端對cookie進行操作,可以在set-cookie末尾加上HttpOnly來防止JavaScript程式碼直接獲取cookie 。
儘量採用post而非get提交表單
4.XSS與CSRF有什麼區別嗎?
XSS是獲取資訊,不需要提前知道其他使用者頁面的程式碼和資料包。CSRF是代替使用者完成指定的動作,需要知道其他使用者頁面的程式碼和資料包。
要完成一次CSRF攻擊,受害者必須依次完成兩個步驟:
登入受信任網站A,並在本地生成cookie。
在不登出A的情況下,訪問危險網站B。
5.CSRF的防範
伺服器端的CSRF方式方法很多樣,但總的思想都是一致的,就是在客戶端頁面增加偽隨機數。