mysql問題一(sql注入和效能優化)

2021-10-24 09:45:32 字數 536 閱讀 3666

一:sql注入

當要執行的sql語句為

select *from user where name=「daming」 or 「a」=「a」;

這個sql恆成立,這樣造成能夠即便輸入錯誤也能查詢到資料庫所有內容

如何防止:

變數使用?代替,例如:select *from user where name=?,這樣sql語句不會發生改變,

即便表單提交為「daming or 『a』』=『a』 ",也會把整體當乙個字元取查詢。

二:效能優化

當明確查詢結果是一條資料的時候,加上limit 1,可以提高查詢效率

例如:每個使用者的手機號碼是唯一的,使用手機號查詢使用者,

語句:select *from user where phonenum=?;這個時候逐條查詢,即便查詢到該使用者,還會繼續查詢,造成效能浪費,所以這種情況下可以select *from user where phonenum=?,limit=1,表示查詢到這條就不會繼續往下查了,效率更高。

sql注入一些注意的問題和常用sql注入url

聯合查詢 即變化id引數的值時,資料庫的內容顯示在網頁中。這種情況下可以考慮聯合查詢。若有,可根據報錯內容判斷是字元型id還是數字型id,前者在程式中要用引號,後者不需要。若是前者,要考慮注入時讓引號閉合,可這樣做 id 5 and 1 2 其中,在sql語言中是注釋的意思,即把後面的引號注釋掉 u...

SQL注入 MYSQL

並不通用,條件苛刻 sql語句中,擷取字串函式的索引是從1開始的,php中是從0開始的 1.過濾or,and,xor 1 首先oorr有用 2 有用 3 有用 4 十六進製制編碼 select column name from information schema.columns where tab...

sql 注入問題

1.關於使用intval強制轉換成數字的問題。數字大於2147483647會出現溢位出現負數。使用個方法來替代這個吧 n n a 2147483648.05555 echo intval a n result 2147483648 echo int a,n result 2147483648 ech...