<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在ASP程序中執行SQL語句的安全問題

      [摘要]在ASP程序中,如果我們的程序設計不當,就有可能面臨數據庫被別人控制的危險以下是一個簡單的用戶更改密碼的代碼---------------------username=request("u...
      在ASP程序中,如果我們的程序設計不當,就有可能面臨數據庫被別人控制的危險

      以下是一個簡單的用戶更改密碼的代碼
      ---------------------
      username=request("user_name")
      pwd=request("pwd")
      username=replace(username,"'","''")
      pwd=replace(pwd,"'","''")
      sql="update tbl_test set pwd='" & pwd & "' where uid='" & username & "'"
      set rs=conn.execute (sql)

      --------------
      現在,假如我注冊一個用戶,用戶名為 aa'; exec sp_addlogin 'haha

      當該用戶更改密碼時(假設改為pp),會出現什么后果呢??

      sql變為 update tbl_test set pwd='pp' where uid='aa' ; exec sp_addlogin 'haha'

      結果是用戶密碼沒有被修改,因為沒有 aa這個用戶,
      但在你的數據庫中創建了一個登陸,新登陸名為 haha

      將用戶名稍加修改,實際上可以運行任何sql語句,任何sql系統過程
      而這一切都在你不知情的情況下發生的,實際上,上面的只是一個

      示范,稍微修改一下用戶名,我們可以做添加一個DBA賬號,刪除所

      有紀錄,讀取用戶密碼等越權操作。

       

       解決的辦法:

      在你使用參數前,對參數進行嚴格檢驗,尤其是用戶輸入的參數

      不但要對其數據類型,長度進行檢查,還要對其內容進行檢查。


      我們再看一段代碼。(用戶登陸)

      username=request("user_name")
      pwd=request("pwd")
      username=replace(username,"'","''")
      pwd=replace(pwd,"'","''")

      sql="select uid,pwd from account where  uid='" & username & "'  and pwd='" & pwd "'"
      rs.open sql,conn,1,1
      if not rs.eof then
      response.write  rs(0) & "歡迎您,您已登陸成功"
      else
      response.write  "登陸失敗,錯誤的用戶名或密碼"
      end if
      ............
      以上程序的漏洞是顯而易見的 
      我們可以以          用戶名:   admin       密碼:   a' or '1'='1
      輕易以admin的賬號登陸系統
      因為我們的sql 變為了
      select uid,pwd from account where  uid='admin' and pwd='a' or '1'='1'
      顯然 uid='admin' and pwd='a' or '1'='1'是恒為成立的所以  rs.eof 為false

      正確的寫法應為
      sql="select uid,pwd from account where  uid='" & username & "'  and pwd='" & pwd "'"
      rs.open sql,conn,1,1
      if rs(0)=username and rs(1)=pwd then
      response.write  rs(0) & "歡迎您,您已登陸成功"
      else
      response.write  "登陸失敗,錯誤的用戶名或密碼"
      end if

       

      ----全文完--------




      日韩精品一区二区三区高清