<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-31  評論-14  文章-0  trackbacks-0

    Sql注入.


    簡介.


    我們很容易從網上查找到sql注入的定義: 就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令,很容易遭到SQL注入式攻擊.

    用戶可以提交一段數據庫的查代碼,根據程序返回結果,獲得一些敏感的信息或是控制整個服務器.sql注入就發生了.

    當然我們要魔高一尺,道高一丈.


    防止sql注入:


      永遠不要信任用戶的輸入,對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和雙 - - (在數據庫中認為是數據庫語句的連接)進行轉換等.

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

       永遠不要使用管理員權限的數據庫的連接,為每個應用使用單獨的權限書庫連接.

      不要把機密的信息直接存放,加密.

      應用的異常信息應該處僅少量的提示,最好使用自定義的錯誤信息對原始的錯誤進行封裝.

      采用軟件和有效的網站平臺來檢測sql注入.

     


    實例.(用參數化的sql進行插入來防止Sql注入)

    向數據庫的新聞類別表(category)通過字符串拼接的方法插入一條語句。


    插入函數的代碼.

    1. <span style="font-size:16px;">public bool Insert(string caName)  
    2.         {  
    3.             //標記位,并且賦初值.  
    4.             bool flag = false;  
    5.             string sql = "insert into category(name) values('" + caName + "')";  
    6.             flag = sqlhelper.ExecuteNonQuery(sql);  
    7.    
    8.             return flag;  
    9.         }</span>  


    我們的界面:



    我們在調試中可以看到傳入數據庫中的sql語句。


    Ctrl+F5我們不調試直接執行,或是我們把此sql語句復制在查詢分析器中執行。界面中我們可以看到。

    在增加一行的基礎同時我們id3的記錄消失了,被刪除了。


    讓我們對插入數據庫的插入代碼修改,用參數傳遞來代替數據庫字符串的拼接。

    SQLHelper加上個ExecuteQuery(string sql ,sqlParam[] paras)的重載.

    1. <span style="font-size: 14pt; ">    </span><span style="font-size:16px;">    /// <summary>  
    2.         ///該方法是通過參數傳遞來執行相應的sql語句.  
    3.         /// </summary>  
    4.         /// <param name="sql"></param>  
    5.         /// <param name="paras"></param>  
    6.         /// <returns></returns>  
    7.         public bool ExecuteNonquery(string sql, SqlParameter[] paras)  
    8.         {  
    9.             bool flag=false ;  
    10.             using (cmd = new SqlCommand(sql, GetConn()))  
    11.             {  
    12.                 //添加參數.  
    13.                 cmd.Parameters .Add (paras );  
    14.                 if (cmd.ExecuteNonQuery()>0)  
    15.                    {  
    16.                        flag =true;  
    17.                    }  
    18.             }  
    19.    
    20.             return flag;  
    21.         }</span><span style="font-size: 14pt;">  
    22. </span>  

    1. <span style="font-size:16px;">/// <summary>  
    2.         /// 增加新聞類別功能方法.  
    3.         /// </summary>  
    4.         /// <param name="caName">新聞類別字符串測試一下</param>  
    5.         /// <returns></returns>  
    6.         public bool Insert(string caName)  
    7.         {  
    8.             //標記位,并且賦初值.  
    9.             bool flag = false;  
    10.             string sql = "insert into category(name) values(@caName)";  
    11.             SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@caName", caName) };  
    12.             flag = sqlhelper.ExecuteNonQuery(sql);  
    13.    
    14.             return flag;  
    15.         }</span><span style="font-size: 14pt;">  
    16. </span>  
    這次我們再進行插入,結果如下.



    posted on 2012-07-09 23:13 zhanghu198901 閱讀(782) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 91制片厂制作传媒免费版樱花| 亚洲国产精品无码久久| 国产久爱免费精品视频| 免费大香伊蕉在人线国产| 亚洲AV色无码乱码在线观看| 日本三级2019在线观看免费| 亚洲校园春色小说| 国产h肉在线视频免费观看| 亚洲性无码av在线| 成人免费视频77777| 亚洲av最新在线观看网址| 日韩免费观看一级毛片看看| 国产精品亚洲精品日韩动图| 一本久久综合亚洲鲁鲁五月天| 男女猛烈无遮掩视频免费软件| 中文字幕在亚洲第一在线| a级毛片免费播放| 亚洲精品自在线拍| 99re热免费精品视频观看| 亚洲国产成人久久一区二区三区| 日本一道综合久久aⅴ免费| 视频免费1区二区三区| 国产AV无码专区亚洲Av| ww在线观视频免费观看| 亚洲1区2区3区精华液| 亚洲色婷婷一区二区三区| 99久久免费中文字幕精品| 亚洲精华国产精华精华液好用| 亚洲国产精品毛片av不卡在线| 国产精品白浆在线观看免费| 色噜噜亚洲男人的天堂| 亚洲乱码国产一区网址| 无码国产精品一区二区免费式芒果| 亚洲高清一区二区三区| 国产乱辈通伦影片在线播放亚洲| 13一14周岁毛片免费| 国产成人综合亚洲一区| 午夜影视日本亚洲欧洲精品一区| 最新69国产成人精品免费视频动漫| 一级做a爰片久久毛片免费看 | 亚洲视频在线观看视频|