sql注入原理
通過把sql命令插入到web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務(wù)器執(zhí)行惡意sql命令
防范
1.永遠不要信任用戶的輸入,要對用戶的輸入進行校驗,可以通過正則表達式,或限制長度,對單引號和雙"-"進行轉(zhuǎn)換等。
2.永遠不要使用動態(tài)拼裝SQL,可以使用參數(shù)化的SQL或者直接使用存儲過程進行數(shù)據(jù)查詢存取。
3.永遠不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用,使用單獨的權(quán)限有限的數(shù)據(jù)庫連接。
4.不要把機密信息明文存放,請加密或者hash掉密碼和敏感的信息
xss
xss:跨站腳本(Cross-site Scripting)是一種網(wǎng)站應(yīng)用程序的安全漏洞攻擊,是代碼注入的一種。它允許惡意用戶將代碼注入到網(wǎng)頁上,其他用戶在觀看網(wǎng)頁時就會受到影響。這類攻擊通常包含了HTML以及用戶端腳本語言。
意思就是比如:攻擊者在論壇中放一個看似安全的鏈接,騙取用戶點擊后,竊取cookie中的用戶私密信息;或者攻擊者在論壇中加一個惡意表單,當用戶提交表單的時候,卻把信息傳送到攻擊者的服務(wù)器中,而不是用戶原本以為的信任站點。
防范
1.首先代碼里對用戶輸入的地方和變量都需要仔細檢查長度和對”<” , ”>” ,? ”;” , ”’” 等字符做過濾;其次任何內(nèi)容寫到頁面之前都必須加以encode,避免不小心把html tag 弄出來。這一個層面做好,至少可以堵住超過一半的XSS 攻擊。
2.永遠不要使用動態(tài)拼裝SQL,可以使用參數(shù)化的SQL或者直接使用存儲過程進行數(shù)據(jù)查詢存取。
3.永遠不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用使用單獨的權(quán)限有限的數(shù)據(jù)庫連接。
4.不要把機密信息明文存放,請加密或者hash掉密碼和敏感的信息
CSRF
跨站請求偽造(英語:Cross-site request forgery),也被稱為 one-click attack 或者 session riding,通??s寫為 CSRF 或者 XSRF, 是一種挾制用戶在當前已登錄的Web應(yīng)用程序上執(zhí)行非本意的操作的攻擊方法。
就是說冒充用戶發(fā)起請求(在用戶不知情的情況下),完成一些違背用戶意愿的請求(如惡意發(fā)帖,刪帖,改密碼,發(fā)郵件等)。只要是偽造用戶發(fā)起的請求,都可成為CSRF攻擊。
防范:
服務(wù)端的CSRF方式方法很多樣,但總的思想都是一致的,就是在客戶端頁面增加偽隨機數(shù)。通過驗證碼的方法
XSS與CSRF的區(qū)別
1.XSS是獲取信息,不需要提前知道其他用戶頁面的代碼和數(shù)據(jù)包。CSRF是代替用戶完成指定的動作,需要知道其他用戶頁面的代碼和數(shù)據(jù)包。
2.要完成一次CSRF攻擊,受害者必須依次完成兩個步驟:a.登錄受信任網(wǎng)站A,并在本地生成Cookie。b.在不登出A的情況下,訪問危險網(wǎng)站B。