接上一篇:正則表達(dá)式(regex)錯(cuò)誤使用導(dǎo)致功能漏洞 ,我們繼續(xù)梳理,正則表達(dá)式錯(cuò)誤使用,導(dǎo)致功能設(shè)計(jì)漏洞(bug),做web方面,需要掌握的知識(shí)很多,網(wǎng)站開(kāi)發(fā)這項(xiàng)工作,在國(guó)內(nèi)也就10多年,很多開(kāi)發(fā)人員,都是通過(guò):培訓(xùn)(自學(xué)) ->模仿->做項(xiàng)目 ,這樣一個(gè)過(guò)程。很多就是修修改改后,就成為了web開(kāi)發(fā)工程師。這行入門(mén)低,很容易上手。但是想成為大師級(jí)的,還是很不容易。需要學(xué)習(xí),掌握的知識(shí)幾十門(mén)。而對(duì)于剛剛?cè)腴T(mén)同人,很多時(shí)候因?yàn)槿狈ο到y(tǒng)學(xué)習(xí),理論支持。導(dǎo)致提升有些心有余而力不足啦!因此,出現(xiàn)這些或多或少的功能設(shè)計(jì)漏洞,是很常見(jiàn)的!
好了,有些跑題了,在做代碼走查時(shí)候,這類(lèi)漏洞也是時(shí)常出現(xiàn)。我們看下,下面代碼:
?php
$user="bcd123張三";
///匹配用戶(hù)名中出現(xiàn)abc還有bcd開(kāi)頭,后面緊跟是數(shù)字字符
preg_match_all("/abc|bcd\d+/",$user,$match);
var_dump($match);
/*結(jié)果是
array(1) {
[0]=>
array(1) {
[0]=>
string(6) "bcd123"
}
}
*/
查找所有頁(yè)面出現(xiàn)abc或者bcd開(kāi)頭,后面緊跟數(shù)字字符串。通過(guò)上面,我們看,正確匹配到bcd123,如果我們輸入:$user = “abc123張三”, 發(fā)現(xiàn)不能匹配到了。原因是”|”字符,優(yōu)先級(jí)最低,以上寫(xiě)法會(huì)變成:匹配abc 或者是bcd\d+ 字符串。

以上圖,將|,包含到()中。
如果要提升優(yōu)先級(jí),可以(abc|bcd)\d+ ,匹配所有abc或者bcd 字符串,并且后面緊跟數(shù)字的。在使用”|”字符串,注意它的優(yōu)先級(jí)級(jí)別低,如果要優(yōu)先匹配,可以放入()中。
您可能感興趣的文章:- Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法
- 正則表達(dá)式字符類(lèi)加深理解
- 正則表達(dá)式\d元字符(相對(duì)于數(shù)字0-9)
- 正則表達(dá)式\W元字符使用方法
- 正則表達(dá)式\w元字符使用介紹
- 利用正則表達(dá)式判斷一個(gè)給定的字符是否是回文
- 使用正則表達(dá)式替換報(bào)表名稱(chēng)中的特殊字符(推薦)
- C#正則表達(dá)式轉(zhuǎn)義字符介紹
- 正則表達(dá)式匹配任意字符(包括換行符)的寫(xiě)法
- 正則表達(dá)式匹配不包含某些字符串的技巧
- 正則表達(dá)式教程之操作符及說(shuō)明詳解