1、常見的web安全及防禦原理javascript
1.sql注入原理html
就是經過把sql命令插入到web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。java
防禦,總的來講有如下幾點:web
一、永遠不要信任用戶的輸入,要對用戶的輸入進行校驗,能夠經過正則表達式,或限制長度,對單引號雙「--」進行轉換等。正則表達式
二、永遠不要使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取。sql
三、永遠不要使用管理員權限進行數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。數據庫
四、不要把機密信息明文存放,請加密或者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方式方法不少樣,但總的思想都是一致的,就是在客戶端頁面增長僞隨機數。