『壹』 對於防止sql注入,似乎只需把用戶輸入的單引號轉義為雙引號就可以徹底解決這個問題了
最後寫成存儲過程,參數化。
1樓,oracle已測試,不成功。
『貳』 sql注入 過濾字元
不需要這么復雜。
你建一個函數,如
function saferequest(str,type)
str為參數,type為類型(1為數字)
if type =1 then
saferequest = clng(request(str))
else
saferequest = replace(request(str),"'","''")
end if
end functioin
原理:
如果為數字型,SQL語句是這樣的
select * from news where id = 1
我們只要判斷參數是否為數字就行。
如果為字元型,語句類似
select * from news where news = 'ef'
如果str = ef'就會產生注入。但過涉單引號後,即無法閉合單引號,所以不會構成注入。在SQL語句中,兩個單引號代替一個單引號字元。
用法:
原先的
id = request("id")
加了函數後
id = saferequest("id",1)
『叄』 sql注入過程中單引號和多個關鍵字被過濾怎麼辦
很高興回答你的問題
SQL注入成功機率和選擇注入目標程序安全性有直接關系.單就你的問題和你的思路來說的話,你還可嘗試利用 ANSI 字元代碼變體來達到目的 比如 " 號對應 chr(34) .
是否成功取決於他本身程序是否也做了過濾.
另:還有很多方法同樣可以達到目的的.比如旁註、跨站、截取cookie 等
『肆』 sql注入 form過濾怎麼繞過
我常用的三種方法:
1,參數過濾,過濾掉 單引號,or,1=1 等類似這樣的 。
2,使用 參數化方法格式化 ,不使用拼接SQL 語句。
3,主要業務使用存儲過程,並在代碼里使用參數化來調用(存儲過程和方法2結合)
『伍』 怎麼繞過這個SQL注入後面的單引號
繞過不執行不知道怎麼寫
但可以讓where條件變成無意義的條件
arg="1' OR '1'='1";這樣c='"+"1' OR '1'='1"+"'。執行時應該就變成了
select * from table where c='1' OR '1'='1' ,判斷條件無意義了,即相當於 select * from table
這個網路上就有示例
『陸』 SQL注入單引號
SqlParameter到資料庫里單引號會被轉義,所以才能有效避免注入攻擊。http://msdn.microsoft.com/zh-cn/library/ms161953(v=SQL.105).aspx
『柒』 過濾單引號後是否sql注入就無解了
也不能這樣說,要過濾的內容很多,如注釋 -- ,exec delete select update 基本的都要過濾,但這不是治本的,如果16進制攻擊也會出問題。
最好的辦法就是使用參數方式來處理SQL,絕不要拼字元
16進制:
http://www.cnblogs.com/liyongfisher/archive/2010/12/20/1911432.html
參數化處理:
http://www.cnblogs.com/lzrabbit/archive/2012/04/21/2460978.html
『捌』 sql注入如何繞過單引號過濾非常感謝!
sql注入現在基本上不用了 後台稍微處理下sql注入就沒有作用了。放棄吧。
『玖』 防sql注入到底應過濾哪些字元
一般來說,這樣處理即可:
所有參數都當作字元串處理,用單引號括起來。另外就是要把字元串中的單引號替換掉。