什麼是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,看到的回顯卻...