sql注入的一點學習(待更新)

2022-08-20 20:39:17 字數 1136 閱讀 7495

什麼是sql注入???

通過把sql命令插入到web表單遞交輸入網域名稱頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。

假如資料庫中有一張商品表goods,存放多條商品資訊

當執行sql語句

select * from goods where id = 1;

查詢結果當然為一條資料

當執行sql語句

select * from goods where id = 1 or  6;

這時候的執行結果會是什麼呢???

結果是所有的商品資訊資料都會被查詢出來。

這只是查詢操作,如果是被人惡意執行刪除操作,那就涼涼了

當我們python**中執行連線資料庫,獲取cursor物件來執行sql語句的時候,不要以拼接字串的形式拼接sql語句,例如根據使用者輸入的id來拼接sql語句

sql  =  """select  *  from  goods  where id = %s;"""%id

如何安全的執行sql語句呢???

sql = """select  *  from  goods  where id = %s;"""

在游標物件執行sql語句的時候傳參

游標物件.execute(sql語句,(引數...))  

如何防止sql注入???

1.永遠不要信任使用者的輸入,要對使用者的輸入進行校驗,可以通過正規表示式,或限制長度,對單引號和雙"-"進行轉換等。

2.永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢訪問。

3.永遠不要使用管理員許可權的資料庫連線,為每個應用使用單獨的許可權有限的資料庫連線。

4.不要把機密資訊明文存放,**密或者hash掉密碼和敏感的資訊。

5.應用的異常資訊應該給出盡可能少的提示,最好使用自定義的錯誤資訊對原始錯誤資訊進行包裝,把異常資訊存放在獨立的表中。

關於sql 注入 一點拙解

我做的學生資訊管理系統的介面 有兩個textbox 兩個button 兩個文字框的名字分別是 username,userpassword,在資料庫中分別對應兩列 loginusername,loginuserpassword 在登入驗證時,我們一般的驗證語句是 select from loginin...

關於驅動更新的一點學習

下次如果遇到無法識別的裝置,成本最低的做法是,先在裝置管理器,右擊選中那些問題裝置,然後更新驅動程式,選擇從本地目錄中安裝,目錄即為 c windows winsxs。2.在利用360安全衛士或者金山衛士之類的優化軟體,進行優化加速時,有可能會將一些系統需要的服務給禁用掉,如這裡和usb相關的 pn...

sql注入之布林注入 實驗吧 認真一點啊!

原文 先簡單地試試,發現輸入1會回顯you are in,輸入其他會回顯you are not in,而輸入1 也會回顯you are not in,這說明單引號沒有被吃掉,還可以使用。繼續測試發現過濾了and 空格和 or沒有被過濾。構造id 1 or 0a 1或者id 1 or 1,看到的回顯卻...