<noframes id="c2hbx"><ol id="c2hbx"></ol></noframes>

<menu id="c2hbx"><tbody id="c2hbx"></tbody></menu>
    1. 首頁(yè)技術(shù)文章正文

      SQL注入,常見的安全漏洞【軟件測(cè)試培訓(xùn)】

      更新時(shí)間:2022-08-16 來(lái)源:黑馬程序員 瀏覽量:

        所謂SQL注入就是把SQL命令人為地輸入U(xiǎn)RL、表格域或者其他動(dòng)態(tài)生成的SQL查詢語(yǔ)句的輸入?yún)?shù)中,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。

        假設(shè)某個(gè)網(wǎng)站通過網(wǎng)頁(yè)獲取用戶輸入的數(shù)據(jù),并將其插入數(shù)據(jù)庫(kù)。正常情況下的URL地址如下。

         http://localhost/id=222

        此時(shí),用戶輸入的id數(shù)據(jù)222會(huì)被插入數(shù)據(jù)庫(kù)執(zhí)行下列SQL語(yǔ)句。

         select * from users where id = 222

        但是,如果我們不對(duì)用戶輸入數(shù)據(jù)進(jìn)行過濾處理,那么可能發(fā)生SQL注入。例如,用戶可能輸入下列URL。

          1=1

        此時(shí)用戶輸入的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)后執(zhí)行的SQL語(yǔ)句如下。

         select * from users where id = '' or '1'='1'

        通過比較兩個(gè)SQL語(yǔ)句,發(fā)現(xiàn)這兩條SQL查詢語(yǔ)句意義完全不同,正常情況下,SQL語(yǔ)句可以查詢出指定id的用戶信息,但是SQL注入后查詢的結(jié)果是所有用戶信息。

        SQL注入是風(fēng)險(xiǎn)非常高的安全漏洞,我們可以在應(yīng)用程序中對(duì)用戶輸入的數(shù)據(jù)進(jìn)行合法性檢測(cè),包括用戶輸入數(shù)據(jù)的類型和長(zhǎng)度,同時(shí),對(duì)SQL語(yǔ)句中的特殊字符(如單引號(hào)、雙引號(hào)、分號(hào)等)進(jìn)行過濾處理。

        值得一提的是,由于SQL注入攻擊的Web應(yīng)用程序處于應(yīng)用層,因此大多防火墻不會(huì)進(jìn)行攔截。除了完善應(yīng)用代碼外,還可以在數(shù)據(jù)庫(kù)服務(wù)器端進(jìn)行防御,對(duì)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行權(quán)限設(shè)置,降低了Web程序連接數(shù)據(jù)庫(kù)的權(quán)限,撤銷不必要的公共許可,使用強(qiáng)大的加密技術(shù)保護(hù)敏感數(shù)據(jù),并對(duì)被讀取走的敏感數(shù)據(jù)進(jìn)行審查跟蹤等。

      分享到:
      在線咨詢 我要報(bào)名
      和我們?cè)诰€交談!