⑴ sql 注入 查詢 特殊符號怎麼處理
防止sql注入,最簡單的辦法就是不要拼接sql,而是採用SqlParameter參數化形式,如果條件可能有可能沒有,可以採用:
string sql = "select * from xx where 1=1";
if(true){
sql += " and id=@id";
command.Parameters.Add(new SqlParameter
}
如果非要拼接sql,那麼對於數值型,拼接前判斷下是否數值,
字元串類型拼接前進行str.Replace("'", "''");// 把一個單引號替換為兩個單引號
就可以避免sql注入了
⑵ 求大神,sql語句模糊查詢怎麼實現的,帶參數
sql語句模糊查詢怎麼實現的,帶參數
like '%'+@參數+'%',只能這樣子寫 防注入的話,你也可以在拿到這個值的時候,在後台代碼檢測一下先
⑶ sql注入,如何查找呢
構造SQL語句,查看結果,其實知道SQL注入本質就知道查找了,SQL就是遠程主機能執行你添加的SQL語句,如果遠程服務能執行說明該WEB存在可能被注入的威脅
⑷ JAVA方法,SQL語句模糊查詢
String sql="select * from ARITCLE where type="+type+" and title like \'\%"+title+"\%\' and writer like \'\%"+writer+"\%\'"
樓上的思路是對的,但是Java中輸出符號要用轉義符 \ 的,應為在Java中 ' % 用自己的意思,所以要用 \' \% 來表示
⑸ 實現模糊查詢並能防止sql注入的方法有哪些,急救...
1. 存儲過程
2.視圖
3.函數
4.參數化
我就知道這幾個了,希望幫到你。
⑹ 掃描發現一個SQL注入,請問如何驗證這個注入,請給我詳細過程,謝謝,好的話還可以加分
掃描是如何進行的,驗證是否存在也是一樣的!
掃描是用某一地址後加上了and 1=1取得的結果進行與and 1=2取得的結果進行比較而確認存在的!有時直接可以對and 1=2進行分析.如果內容沒有顯示完或是顯示有部分錯誤時,一般會報資料庫錯誤!可以知道這存在一個SQL 注入的!
然後就是直接的注入了!以手動為例,第一步猜表名:使用(select count(*) from admin)>0將語句中的1=2代替,查看反回結果,若是與1=2的界面一樣出現錯誤或是顯示不完全,則說明不存在admin表,一步一步到試表名,常用的一般是admin,administrator,manager等表名的!
第二步從猜到的表名中猜列名
(select count(*) from admin where len(username)>=1)>0
如果顯示完全則表明存在username列名,當然還要猜一個密碼的列名,一個是user,username之類,密碼是password之類.
第三步,從猜到的表名或列名中猜管理員的名稱.
如果是論壇的形式,有些設計上有不好的地方,就是管理員在論壇中發言的那個名稱往往就是管理員的名稱,因為圖省事,發言所用的昵稱與登陸所用的用戶名是同一個.如果是,則好辦,否則也是猜的!
一般我會找一個最長的管理員名稱猜或者先猜出長度!如:len(username)>=5時正常,而大於等於6時出錯!那麼長度一定是5位!
然後用
(select count(*) from admin where len(username)=5 and left(username,1)>='a')>0
出錯則第一個字元小於a,根據字元的編碼去猜吧,可以找到猜到left(username,1)>="A"時正常,而>="B"時不正常.那麼第一個字元就是"A",直到5個都猜完,比如得到"Admin"就知道了其用戶名!
第四步猜密碼:
(select count(*) from admin where username ='Admin' and left(password,1)>='a')>0
同樣的方式可以猜到密碼,最好先猜一下密碼長度,如果是16位或是32位時往往使用了MD5加密,猜到的是加密過的字元而不是真正的密碼!
第五步,其實第五步也是提前確認的,不然我們作的都是無用功!找後台登陸頁面.
在後台登陸,當然如果網站為了安全,使用了JS先對密碼進行加密的話,可以讓JS不運行或是下載頁面進行改造,不讓其加密你的密碼,這時你可以在密碼中直接輸入第四步的MD5的值.如果密碼是明文傳播,也就是在伺服器端進行校驗時,只有將第四步得到的MD5匹配,不叫反解MD不能反解,但可以在網站上得到一個匹配,也就是說某一個密碼可以生成同樣的MD5值,那這個密碼就可以用!當然,如果明文存在資料庫中就更好玩了!直接輸入吧!
第六步,進入後台後,添加管理員帳戶!以後想怎麼玩就怎麼玩,要是一個不細心的網管,再不查一下後台的管理員,你想他的後果是什麼?
第七步,可能嗎?大部分的管理員不是弱智,所以第六步往往只是一個障眼法!因為添加管理員很容易被發現的!添加木馬程序!或者寫一個頁面,這個頁面的名字與地址你自己記好,然後隱藏,一般管理員都不會在意的!這個頁面是顯示其特定資料庫的!你也想了顯示哪個呢?肯定管理員了!
以後你也登陸,如果添加的帳戶登陸不上,就調用那個隱藏的地址,顯示出真正管理員的密碼或是MD5值,同上邊一樣登陸進行!再建一個管理員迷惑他!
當然,如果資料庫允許插入的話,也好玩!不必狂管理員的帳戶與密碼,直接使用insert into語句插入一個管理員和密碼就可以了!但是由於admin表中除這兩項外,還有不允許為空時我們要麼再猜其他欄位(這個很難),很難插入的!
如果是SQL資料庫,而他們開的恰恰又是sa帳戶的話,好玩的事更多了!因為sa的許可權很大,直接可以從系統表中查詢各個表的名稱等,
這只是手動的一個例子,做為新手可以實現注入.但記著不要給人家網站添麻煩,都不容易!
⑺ 求助,關於SQL注入如何繞過SELECT語句的過濾
1,:轉換個別字母大小寫,無效
2:輸入SESELECTLECT之類的語句來代替SELECT,無效
3:用轉義的URL編碼來代替SELECT(不知道這么表述對不對,就是%後面跟上16進制的ascii碼……),無效
4:用/**/來隔開SELECT中的各個字母,無效
⑻ sql的模糊查詢
1.防止SQL注入 你得把傳進來的參數裡面的特殊字元都過濾掉 這個比較簡單 字元替換就行
2.select * from news where title like '%'+@title+'%'
這樣寫
⑼ C#寫了一條SQL查詢語句,帶了防注入參數,但是想模糊查詢怎麼辦
like '%'+@參數+'%',只能這樣子寫
防注入的話,你也可以在拿到這個值的時候,在後台代碼檢測一下先
⑽ 如何實現SQL的多條件模糊查詢
不知道我是否理解了你的意思。
由於不知道頁面會傳來多少個「問題」,你只能去手動拼接sql語句了。比如頁面穿來了n個"問題「。
你只能去遍歷,比如」問題"的name值為"answer",在前台你可以處理下,把所有的answer以逗號分割,比如"answer1,answer2..."
String answer[]=request.getParameter("anser").split(",")
String answerVal[]=request.getParameter("answerVal").split(",")
StringBuilder sb=new StringBuilder();
sb.append("select * from table where ")
for(int i=0,l=answer.length;i<l;i++){
sb.append(answer[i]+ " like '%"+answerVal[i]+"' and ");
}
sb.append(" 1=1 ")
String sql=sb.toString()
//execute query
這段代碼不完整,會有點問題 但思路是這樣的。還有 別直接這么寫,建議用prepareStatement,否則會存在SQL注入。懂思想即可。