sql注入是大家基本都清楚,一般來說用引數化就能解決注入的問題,也是最好的解決方式。
有次技術群裡問到乙個問題,如下圖
很顯然tablename是外部傳遞過來的,暫時不考慮具體的業務環境,但如果以select * from @table 把錶名稱當引數肯定是不能執行的,如果是拼接sql會有注入的危險。那麼此情況怎麼才能避免sql注入?
後來想到乙個方式,如下圖
看起來用到了引數化,應該沒有注入的危險吧?那就寫例子試試看
結果很不好,測試表tb還是被注入了資料。為什麼會這樣?其實仔細分析下,這種寫法是資料庫端進行sql拼串,基本上越過了引數化。
再回過頭怎麼解決剛才那個問題,怎麼查傳遞過來的表名稱,可以使用系統表查表
上圖**有再優化的可能,不在本文討論範圍內
總結:
轉貼 Unix C語言值得注意的地方
盡量的把函式弄的通用點,行少點,乙個函式只完成乙個簡單的功能,一眼就能看出來此函式有沒有 錯誤,每個函式都是健壯的,那麼你的程式就是健壯的。要少 完成乙個功能的時候在邏輯清楚的情況下 越少越好,千萬不要比 誰寫的多啊。演算法要好 在 完成乙個功能的時候要考慮效率,目前計算機的記憶體很大,所以記憶體已...
golang 值得注意的地方(2則)
golang 的語法和使用方式都非常簡單明瞭,沒有花哨的語法糖,也沒有多餘的關鍵字。但是即使是這麼簡潔的語言,仍然有一些不那麼直白,需要注意的地方,比如下面2點。package main import bytes fmt io func main f b func f out io.writer e...
關於Validform 控制項 值得注意的地方
validform中有個引數ajaxpost選擇true和false,如果選擇true的時候要注意,前台form上的action位址是無效的,所以你可以寫可以不寫,但一定要寫 method,那麼提交表單的位址就要在validform 裡設定,validform有個引數是url其實很明顯了,我就不用贅...