SQL注入

       SQL注入前端

簡介:

利用現有的應用程序,將惡意的SQL命令注入到存在安全問題的應用程序的後臺數據庫,使得對數據庫的操做不按照設計者的意圖去操做。

案例

源代碼:select id from users where username = '"+username +"' and password = '"  + password +"

SQL注入:select id from users where username = 'abc' or 1 = 1--  and password = '123'
注入後你隨便輸入用戶名和密碼即可以登陸

預防SQL注入

  • 前端:對用戶輸入的信息進行校驗,避免使用操做數據庫的字段、對單引號和雙"-"進行轉換等。sql

  • 後臺:數據庫

        1. 永遠不要使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取。安全


好比mybatis中:
 <if test="goodsName != null">
        AND goods_name LIKE CONCAT('%','${goodsName}','%')
 </if>
 <if test="goodsName != null">
        AND goods_name LIKE CONCAT('%',#{goodsName},'%')
 </if>

        2. 應用程序拋出的異常進行分裝,避免暴露數據庫結構。mybatis

        3. 不一樣應用程序使用不一樣的數據庫權限。加密

        4. 對於機密的信息進行加密,好比密碼等。spa

相關文章
相關標籤/搜索