1樓:圭英冷古
首先提及sql注入這個題目,也許大家會笑笑,覺得這是一件比較低階的攻擊方式,但事實上,正是這種不屑,就可能會導雀哪衝致我們**緩臘資料庫伺服器被攻擊,甚至伺服器許可權都被提走,這種例子,以不鮮見。
queryselect
fromuser
wherename
name.'
這樣的sql是我們經常有頃殲寫的,然後$name;delete
fromuser
wherename="mini
這裡'後面跟乙個空格,其實沒有,是wile看的更清楚些。
2樓:荊芳菲力蒼
簡單舉例,某登入介面用。
select
fromtabuser
whereusername
val1and
password
val2來驗證輸入的使用者名稱密碼是否有效,只有兩者都正確才會返回。
如果你在密碼輸入框(@val2
輸入。abcor
1,那麼整個語句就變成。
whereandor1=1,很明顯,這條毀薯語句總纖芹者是會返回。
的。結果就是雖然沒有正確的使用者名稱密碼,但首裂成功登入了。
3樓:無時無刻的相戀
首先提及sql注入這個題目,也許大家會笑笑,覺得這是一件比較低階的攻擊方式,但事實上,正是這種不屑,就可能會導致我們**資料庫伺服器被攻擊,甚至伺服器許可權都被提走,這種例子,以不鮮見。
query = 'select * from user where name =" '.$name.' "';
這樣的sql是我們經常有寫的,然後$name = ' ";delete from user where name="mini --";';
這裡' 後面跟乙個空格,其實沒有,是wile看的更清楚些。
asp+sql 如何有效的防止sql注入
4樓:翼帆
sql注入,一般由 request 提交而來,所以過濾 request引數即可。
比如,正常獲取 id 為 request("id") ,獲取後,對其進行強制轉為int型,如。
id = cint("id"))
同理,凡是數字型的,一律進行判斷是否數字或強制轉換。
如果是字元型的,要寫入sql語句的,一律對單引號進行轉義,如。
sqlserver和access中,替換成兩個單引號。mysql中替換成 \' 等。
可以寫成乙個固定的函式來代替request,可以達到防止注入的目的。
5樓:匿名使用者
這屬於**程式安全,建議找專業做伺服器安全和**安全的來給你解決把。sinesafe不錯。
以下選項中()不屬於防止sql注入的做法(選擇一項)
6樓:老師小喬
答案選d。選擇使用什麼資料庫本身不能作為防止sql注入,無論使用什麼資料庫,不做任何防護,都會有被sql注入的危險。如果對客戶端和伺服器端進行相應設定便可以起到防止sql注入的作用。
比如:對使用者資料進行過濾(a選項)、對資料庫使用者訪問許可權以及對資訊加密(b選項、c選項)等。另外在程式設計時避免程式漏洞也可防止一部分sql注入。
sql注入的一部分功能就是為了竊取資料庫登入資訊等,另外可利用登入資訊進行sql語句拼接達到注入的目的,所以對賬號加密處理對防止sql注入起到了一定的作用。
對於防止sql注入,似乎只需把使用者輸入的單引號轉義為雙引號就可以徹底解決這個問題了?
7樓:網友
最後寫成儲存過程,引數化。
1樓,oracle已測試,不成功。
8樓:匿名使用者
那本來的雙引號不就區分不出來了。
c# 傳參的方式能完全防止sql注入嗎
9樓:網友
引數化sql語句完全能夠防止sql注入,我說得是完全。不必再過濾什麼了。
引數化sql是直接生成sql資料庫查詢底層的引數,而不是通過編譯器和直譯器根據sql語句自動分詞,確定引數的值(這樣容易被騙)。
比如:select 姓名 from 基本資訊 where 學號='18',客戶構造sql語句:select 學號 from 基本資訊 where 學號='' or '1'='1',sql資料庫系統編譯解釋為:
1.這是一條select語句;
2。操作的表為「基本資訊」;
3。返回欄位為「姓名」;
4。條件為學號='' or '1'='1'
5。學號的引數為''。
這樣就被騙了。
而採用引數化方法,select 學號 from 基本資訊 where 學號=@studentid,引數@studentid=' or '1'='
最後編譯解釋為select 學號 from 基本資訊 where 學號="' or '1'='"
相當於在引數@studentid的值的外面加上了乙個看不見的"",所以無論對方構造的如何巧妙,都無法注入。
10樓:
結論:如果不能夠重用執行計劃,那麼就有sql注入的風險,因為sql的語意有可能會變化,所表達的查詢就可能變化。
首先,什麼是注入漏洞攻擊呢?所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。通常的解決方案有過濾敏感字元,比如說過濾掉or, and , select sql等關鍵字,通過引數化查詢解決sql注入漏洞的例項。
所謂的引數化查詢(parameterized query 或 parameterized statement)是指在設計與資料庫鏈結並訪問資料時,在需要填入數值或資料的地方,使用引數 (parameter) 來給值,這個方法目前已被視為最有效可預防sql注入攻擊 (sql injection) 的攻擊手法的防禦方式。microsoft sql server 的引數格式是以 "@" 字元加上引數名稱而成。
sql 引擎的處理流程,大致為:收到指令 ->編譯sql生成執行計劃 ->選擇執行計劃 ->執行執行計劃。
引數化查詢主要做了這些事情:
1:引數過濾,對傳入值進行了處理,按字元語義來處理。
2:執行計劃重用。
為引數化查詢可以重用執行計劃,並且如果重用執行計劃的話,sql所要表達的語義就不會變化,所以就可以防止sql注入,如果不能重用執行計劃,就有可能出現sql注入,儲存過程也是一樣的道理,因為可以重用執行計劃。
mybatis在傳參時,為什麼#能夠有效的防止sql注入
11樓:愛抗日的小隊長
1、可以是其他的實體物件 2、不是 3、這個就等同於你在不同類中有同名方法,這有什麼影響呢?你就當每個xml就是乙個實現類好了。
求sql語句,求!!!SQL語句!
隨緣寫法你看是你要的不,實際上要是已經是1和0了 直接sum也行select a1,sum a2 sum a3 from a group by a1 既然已經是1和0了,那麼直接sum就可以了 select place,sum tdbz sum xdbz from table group by pl...
sql語句中,SQL語句中USE
三歲喝酒 use pubs 選擇 名字 pubs 的資料庫 select title id from sales where title id in 查詢欄位title id符合號內限定條件的表sales的 title id 列 select title id from titles where t...
sql基礎查詢語句,sql簡單查詢語句
greate table insert selce filetad,name,calss,form student sql簡單查詢語句 1 首先開啟資料庫,建立好表。2 然後查詢全體教師的教師號 姓名 職稱,並分別為三列指定別名 教師號 姓名 職稱,如下圖所示。3 查詢結果如下圖所示。4 接著查詢所...