1. 程式人生 > >SQL注入和XSS攻擊

SQL注入和XSS攻擊

SQL注入:
所謂SQL注入,就是通過把SQL命令插入到提交的Web表單或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令,導致資料庫中的資訊洩露或者更改。
防範:
1.永遠不要信任使用者的輸入,將使用者輸入的資料當做一個引數處理:
使用引數化的形式,也就是將使用者輸入的東西以一個引數的形式執行,而不是將使用者的輸入直接嵌入到SQL語句中,使用者輸入就被限於一個引數。
2.避擴音示詳細的錯誤資訊:
當用戶輸入錯誤的時候,避擴音示一些詳細的錯誤資訊,因為黑客們可以利用這些訊息,使用一種標準的輸入確認機制來驗證所有的輸入資料的長度、型別、語句、企業規則等。
3. 加密處理:
將使用者登入名稱、密碼等資料加密儲存。加密使用者輸入的資料,然後再將它與資料庫中儲存的資料比較,這相當於對使用者輸入的資料進行了“消毒”處理,使用者輸入的資料不再對資料庫有任何特殊的意義,從而也就防止了攻擊者注入SQL命令。
4.確保資料庫安全: 
鎖定你的資料庫的安全,只給訪問資料庫的web應用功能所需的最低的許可權,撤銷不必要的公共許可,如果web應用不需要訪問某些表,那麼確認它沒有訪問這些表的許可權。如果web應用只需要只讀的許可權,那麼就禁止它對此表的 drop 、insert、update、delete 的許可權,並確保資料庫打了最新補丁。

##################################################################

XSS攻擊(Cross Site Scripting), 中文名為跨站指令碼攻擊,指的是將xss程式碼植入到提供給其它使用者使用的頁面中,從而達到盜取使用者資訊和做一些違法操作,比如這些程式碼包括HTML程式碼和客戶端指令碼:
是發生在目標使用者的瀏覽器層面上的,當渲染DOM樹的過程成發生了不在預期內執行的JS程式碼時,就發生了XSS攻擊。
跨站指令碼的重點不在‘跨站’上,而在於‘指令碼’上。大多數XSS攻擊的主要方式是嵌入一段遠端或者第三方域上的JS程式碼。實際上是在目標網站的作用域下執行了這段js程式碼。
1.一旦在DOM解析過程成出現不在預期內的改變(JS程式碼執行或樣式大量變化時),就可能發生XSS攻擊
2.XSS分為反射型XSS,儲存型XSS和DOM XSS
3.反射型XSS是在將XSS程式碼放在URL中,將引數提交到伺服器。伺服器解析後響應,在響應結果中存在XSS程式碼,最終通過瀏覽器解析執行。
4.儲存型XSS是將XSS程式碼儲存到服務端(資料庫、記憶體、檔案系統等),在下次請求同一個頁面時就不需要帶上XSS程式碼了,而是從伺服器讀取。最典型的就是留言板XSS。使用者提交了一條包含XSS程式碼的留言到資料庫。當目標使用者查詢留言時,那些留言的內容會從伺服器解析之後加載出來。瀏覽器發現有XSS程式碼,就當做正常的HTML和JS解析執行。XSS攻擊就發生了。
5.DOM XSS攻擊不同於反射型XSS和儲存型XSS,DOM XSS程式碼不需要伺服器端的解析響應的直接參與,而是通過瀏覽器端的DOM解析。這完全是客戶端的事情。DOM XSS程式碼的攻擊發生的可能在於我們編寫JS程式碼造成的。我們知道eval語句有一個作用是將一段字串轉換為真正的JS語句,因此在JS中使用eval是很危險的事情,容易造成XSS攻擊。避免使用eval語句

XSS的危害:
1.XSS危害有通過document.cookie盜取使用者cookie
2.通過JS或CSS改變樣式
3.流量劫持(通過訪問某段具有window.location.href定位到其他頁面)
4.Dos攻擊:利用合理的客戶端請求來佔用過多的伺服器資源,從而使合法使用者無法得到伺服器響應。
5.利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)使用者的身份執行一些管理動作,或執行一些一般的如發微博、加好友、發私信等操作。
6.利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當的投票活動。

XSS的預防:
1.過濾危險的DOM節點。如具有執行指令碼能力的script, 具有顯示廣告和色情圖片的img, 具有改變樣式的link, style, 具有內嵌頁面的iframe, frame等元素節點。
2.過濾危險的屬性節點。如事件, style, src, href等
3.對cookie設定httpOnly,對重要的cookie設定httpOnly,防止客戶端通過document.cookie讀取cookie。服務端可以設定此欄位
5.對使用者輸入資料的處理,1.編碼:不能對使用者輸入的內容都保持原樣,對使用者輸入的資料進行字元實體編碼 2.解碼:原樣顯示內容的時候必須解碼,不然顯示不到內容了。3.過濾:把輸入的一些不合法的東西都過濾掉,從而保證安全性。如移除使用者上傳的DOM屬性,如onerror,移除使用者上傳的Style節點,iframe, script節點等。

受到xss攻擊的網站事例:
1. 2011年6月新浪微博出現了一次比較大的XSS攻擊事件。大量使用者自動傳送一些資訊並關注一位名為hellosamy的使用者,一個小時完成修復
2. 百度貼吧xss攻擊事件
2014年3月六安吧等幾十個貼吧中帖子不斷轉發,病毒迴圈發帖。並且導致吧務人員,和吧友被封禁

 

參考連結:
https://www.cnblogs.com/unclekeith/p/7750681.html