国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動安全 安全管理 應(yīng)用案例 網(wǎng)絡(luò)威脅系統(tǒng)安全 應(yīng)用安全 數(shù)據(jù)安全 云安全
當(dāng)前位置: 主頁 > 信息安全 > 系統(tǒng)安全 >

HTML5安全風(fēng)險詳析之三:WebSQL攻擊

時間:2013-03-11 15:01來源: 點擊:
HTML5安全風(fēng)險詳析之三:WebSQL攻擊
TagsHTML5安全(14)安全風(fēng)險(103)WebSQL(2)  

  一、WebSQL安全風(fēng)險簡介

  安全一直是后端人員廣泛關(guān)注和需要預(yù)防的問題。但是自從引入本地數(shù)據(jù)庫和WebSQL之后,前端開發(fā)對于數(shù)據(jù)庫的安全也必須要有所了解和警惕。WebSQL的安全問題通常表現(xiàn)為兩個部分:

  第一種是SQL注入:和本地數(shù)據(jù)庫一樣,攻擊者可以通過SQL注入點來進行數(shù)據(jù)庫攻擊。

  另外一方面,如果Web App有XSS漏洞,那么本地數(shù)據(jù)很容易泄漏,可以想想本地數(shù)據(jù)庫里了用戶最近交易記錄或者私信的情況。

  二、WebSQL安全風(fēng)險詳析

  1、SQL注入

  例如我們有一個URL為http:/blog.csdn.net/hfahe?id=1,它接收了一個id參數(shù)來進行本地數(shù)據(jù)庫查詢并輸出,對應(yīng)的SQL語句為“select name from user where id = 1”。

\

  但是針對這個簡單的SQL查詢,攻擊者可以構(gòu)造一個虛假的輸入數(shù)據(jù)“1 or 1 = 1”,那么我們的SQL語句將變?yōu)椤皊elect name from user where id = 1 or 1 = 1”。這就相當(dāng)糟糕了,因為1=1這個條件總是成立的,那么這條語句將遍歷數(shù)據(jù)庫user表里的所有記錄并進行輸出。

\

  利用這種方式,攻擊者可以構(gòu)造多種攻擊的SQL語句,來操縱用戶的本地數(shù)據(jù)庫記錄。

  2、XSS與數(shù)據(jù)庫操縱

  在有XSS漏洞的情況下,攻擊者獲取本地數(shù)據(jù)需要如下幾個步驟:

  1)獲取JavaScript數(shù)據(jù)庫對象

  2)獲取SQLite上的表結(jié)構(gòu)

  3)獲取數(shù)據(jù)表名

  4)操作數(shù)據(jù)

  例如如下腳本完整的實現(xiàn)了上面的步驟,我在Chrome控制臺里運行即可得到用戶本地數(shù)據(jù)庫的表名,利用這個表名攻擊者可以用任何SQL語句來完成攻擊。

\

  三、防御之道

  針對WebSQL攻擊,我們有如下方法預(yù)防:

  1) 檢查輸入類型,過濾危險字符

  我們需要保證輸入類型符合預(yù)期,例如上面的id參數(shù)一定是數(shù)字類型;同時過濾掉危險的關(guān)鍵字和符號,像PHP里addslashes這個函數(shù)的作用一樣。

  2) 在SQL語句中使用參數(shù)形式

  SQL語句是可以用參數(shù)形式的,例如

  01.executeSql("SELECTname FROM stud WHERE id=" + input_id) 這種字符串拼接的形式并不安全,可以換為

  executeSql("SELECTname FROM stud WHERE id=?“, [input_id]);) 這樣能保證參數(shù)的輸入符合設(shè)定的類型。

  3)謹(jǐn)慎對待每一次SQL操作

  無論是select、modify、update或者delete,你編寫的任何SQL語句操作都有可能成為攻擊者的攻擊對象,造成重大損失,所以都必須要謹(jǐn)慎對待。

  4)不要存儲重要數(shù)據(jù)

  本地數(shù)據(jù)庫永遠透明而不安全,重要的數(shù)據(jù)必須要存儲在上,本地數(shù)據(jù)庫里沒有重要數(shù)據(jù)就不會對用戶造成重大損失。

  5)杜絕XSS漏洞

  XSS攻擊的防御將會在專門章節(jié)闡述,本文不展開詳析。

------分隔線----------------------------

推薦內(nèi)容