• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    防范Sql注入式攻擊

    發布: 2008-8-04 10:32 | 作者: 網絡轉載 | 來源: 測試時代采編 | 查看: 46次 | 進入軟件測試論壇討論

    領測軟件測試網 Sql注入式攻擊是指利用設計上的漏洞,在目標服務器上運行Sql 命令以及進行其他方式的攻擊

    動態生成Sql命令時沒有對用戶輸入的數據進行驗證是Sql注入攻擊得逞的主要原因
    比如一個在線書店,可以根據用戶的輸入關鍵字搜索相關的圖書。

    string name = GetUserInput("BookName");
    string script = "select table_book where book_name? like? N'%" + name + RunSql(script)
    RunSql(script);

    如果
    name? = " ' select @@servername where '' = ' ";
    這樣就可以得到DB Server的名字


    還以在線書店為例,用戶只有登陸后才能察看自己的帳戶信息,這樣做是無可置疑的,然而用戶驗證的代碼如下

    //id和password直接來自用戶的輸入。未做處理
    string id = GetUserInput("UserID");
    string password = GetUserInput("UserPassword");

    tring script = "select * from table_user where User_ID = '" + id? + "' and User_Password? = '" + password? + "' ";
    RunSql(script);

    如果用戶輸入的password為“ or ''=' ”,那么生成的script就為
    select * from table_user where User_ID = 'UserID' and User_Password? = ' ' or ''=' '
    這樣一來,即使不知道用戶的密碼也可以察看該用戶的帳戶信息了

    再比如,入侵者會把一些巧妙偽裝的代碼嵌入到你動態生成的Sql命令中,比如
    Delete table_Book where 1 = 1? ...
    use master--


    上面的例子都是一些簡單的示例,攻擊者還可能通過sql的漏洞對操作系統進行攻擊,比如運行
    [xp_cmdshell],[xp_regread]

    當然實際上的攻擊沒有這么簡單,攻擊者還會利用系統設計的其他漏洞。比如程序把數據庫返回的出錯信息沒有進行轉換就直接輸出給用戶看,那么攻擊者就設計一些sql語句誘導系統返回需要的信息


    從上面的這些例子可以看出,對數據庫訪問權限的設計不當,給與每一個數據庫連接太多的權限,甚至dbo或sa的權限,也是sql注入式攻擊利用的主要漏洞之一。

    ?

    防范sql注入式攻擊

    最小權限原則。特別是不要用dbo或者sa賬戶,為不同的類型的動作或者組建使用不同的賬戶,最小權限原則適用于所有與安全有關的場合

    對用戶輸入進行檢查。對一些特殊字符,比如單引號,雙引號,分號,逗號,冒號,連接號等進行轉換或者過濾;使用強數據類型,比如你需要用戶輸入一個整數,就要把用戶輸入的數據轉換成整數形式;限制用戶輸入的長度等等。這些檢查要放在server運行,client提交的任何東西都是不可信的

    使用存儲過程,如果一定要使用sq語句,那么用標準的方式組建sql語句,比如可以利用parameters對象,避免用字符串直接拼sq命令。

    當sql運行出錯時,不要把數據庫返回的錯誤信息全部顯示給用戶,錯誤信息經常會透露一些數據庫設計的細節

    針對常用的sql注入式攻擊方式對癥下藥

    參考

    Advanced SQL Injection In SQL Server Applications
    http://www.nextgenss.com/papers/advanced_sql_injection.pdf

    More Advanced SQL Injection
    http://www.nextgenss.com/papers/more_advanced_sql_injection.pdf

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: sql SQL Sql 攻擊 注入式


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>