sql參數過濾
① %201=1-- sql注入怎麼過濾
你舉出的這個例子是最常見的注入方式了,原因就是在字元串拼接sql的時候如果有--,那麼之後的SQL語句即當做注釋進行處理,即便代碼或存儲過程執行,也是不會報錯並能順利執行之前的語句的。
有2個好用的建議
1 把外部的參數,如果包含-- 則統統替換為 - - 即中間加入空格;這樣最多報錯,但不會被執行成功
2 如果是代碼字元串拼接,建議即便是number型的,在做sql的時候仍然加'' 例如select * from a where b = '"+haha+"'(b欄位為數值型),這樣對外部的參數進行處理,將所有的單引號統統替換為雙引號,即可解決。其中意義在於不讓後續的參數拼接形成 '' or 1=1-- and.........之類的局面
② 用SQL語句過濾數據
整個結果集:
SELECT*FROM表
WHERE班級=@班級參數
把DropDownList里綁上班級,根據你下拉的結果,把班級傳給整個結果集,用於過濾
SELECTDISTINCT班級
FROM表
這樣可以取出不重復的班級記錄
最後把DropDownList取出的班級值@班級參數,傳給結果集,這樣結果集就可以根據你下拉框選的班級,動態過濾結果了。
③ sql 如何過濾重復記錄
SQL過濾重復記錄有兩種辦法:
通過SQL結構化查詢語言來實現,在Select後面加上關鍵字DISTINCT,意思就是查詢行無重復,注意DISTINCT關鍵字是針對行,不是某一列,如果想得到某一列不重復記錄,那就SELECT DISTINCT後面只放一個欄位。
通過存儲過程,過濾重復記錄,存儲過程逐條查詢,比對之前的記錄,如果有重復就跳到下一條,如果不重復游標繼續。
④ sql里過濾相同數據
如有表A(col1,col2,col3)
要過濾col1,col2,col3都相同的數據時可以用distinct
如select distinct col1,col2,col3 from A
如只要過濾col1,col2相同的數據,且取col3最大值時可以如下
select col1,col2,max(col3) as col3 from A group by col1,col2
⑤ 「如何使用」SQL過濾代碼
Public Function RepBadChar(strChar)
If strChar="" Then
RepBadChar=""
Else
RepBadChar=Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(strChar,"'",""),"?",""),"(","("),")",")"),"<",""),".","."),">","")," ","")
End if
End function
dim id
id =request.QueryString("id")
if len(RepBadChar(id))<>len(request.QueryString("id")) then
response.write"<script>alert(""id參數里含有非法字元"");location.href=""../index.asp"";</script>"
response.end
end if
⑥ sql 如何過濾重復記錄
問題背景
在一個多表查詢的sql中正常情況下產生的數據都是唯一的,但因為資料庫中存在錯誤(某張表中存在相同的外鍵ID)導致我這邊查詢出來的數據就會有重復的問題
下面結果集中UserID:15834存在多個
參考:
MSDN: OVER 子句 (Transact-SQL)
stackoverflow sql query distinct with Row_Number
SQL Trick: row_number() is to SELECT what dense_rank() is to SELECT DISTINCT
⑦ 防sql注入到底應過濾哪些字元
一般來說,這樣處理即可:
所有參數都當作字元串處理,用單引號括起來。另外就是要把字元串中的單引號替換掉。