mysql的等号是什么意思_整理思维——等于等于等于?{MySQL条件等号的异常}
MySQL WHERE語句中,等號”=”通常作為判斷的條件,然而這個等號卻是弱類型的判斷,如果忽略了這一點,很容易造成安全問題,以下我便整理一下我所知道的匪夷所思的“相等”.。
1.字符型和數字型
MySQL的等號同PHP一樣,對等號兩端不同的數據類型都有強制類型轉換,如下
但是卻沒有PHP的弱類型判斷
這個的應用范圍很局限,但是又不得忽視,所以開發者在字段的數據類型的選擇以及sql語句的構造方面,要多多注意,防止等號兩邊類型不相同導致的漏洞。
2.尾空格
MySQL等號對字符串尾部的空格做忽視的處理,所以我們可以構造一個’abc’=’abc?? ’的效果,繞過某些特定串整體檢查的WAF,不過相對來說,這個也比較雞肋,因為很少有用字符串直接比對來過濾某些敏感串的。
這個可以直接用trim函數來避免
3.unicode字符集相似字符
其中有些相似字符,比如下面這個與a相似
這樣會造成什么后果呢?
看到了吧,MySQL的等號認為這些相似字符也是相等的,這樣的話,我們就可以完全繞過對敏感串的過濾,前提是在UTF8編碼下。
4.新型萬能密碼
username='wupco'=''
這是有2個等號,然后計算順序從左到右,
先計算username='wupco'
如果沒有這個記錄,則返回false
然后false=''
就成了true
所以這個就變成了where 1
達到了萬能密碼的效果
總結
以上是生活随笔為你收集整理的mysql的等号是什么意思_整理思维——等于等于等于?{MySQL条件等号的异常}的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞跃奇异点:微星笔记本13th+RTX4
- 下一篇: 微软公布ChatGPT版Bing不到48