正则表达式(regex)或操作符”|“使用易出现功能Bug
2019/6/29 21:02:57
本文主要是介绍正则表达式(regex)或操作符”|“使用易出现功能Bug,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
接上一篇:正则表达式(regex)错误使用导致功能漏洞 ,我们继续梳理,正则表达式错误使用,导致功能设计漏洞(bug),做web方面,需要掌握的知识很多,网站开发这项工作,在国内也就10多年,很多开发人员,都是通过:培训(自学) ->模仿->做项目 ,这样一个过程。很多就是修修改改后,就成为了web开发工程师。这行入门低,很容易上手。但是想成为大师级的,还是很不容易。需要学习,掌握的知识几十门。而对于刚刚入门同人,很多时候因为缺乏系统学习,理论支持。导致提升有些心有余而力不足啦!因此,出现这些或多或少的功能设计漏洞,是很常见的!
好了,有些跑题了,在做代码走查时候,这类漏洞也是时常出现。我们看下,下面代码:
<?php $user="bcd123张三"; ///匹配用户名中出现abc还有bcd开头,后面紧跟是数字字符 preg_match_all("/abc|bcd\d+/",$user,$match); var_dump($match); /*结果是 array(1) { [0]=> array(1) { [0]=> string(6) "bcd123" } } */
查找所有页面出现abc或者bcd开头,后面紧跟数字字符串。通过上面,我们看,正确匹配到bcd123,如果我们输入:$user = “abc123张三”, 发现不能匹配到了。原因是”|”字符,优先级最低,以上写法会变成:匹配abc 或者是bcd\d+ 字符串。
以上图,将|,包含到()中。
如果要提升优先级,可以(abc|bcd)\d+ ,匹配所有abc或者bcd 字符串,并且后面紧跟数字的。在使用”|”字符串,注意它的优先级级别低,如果要优先匹配,可以放入()中。
这篇关于正则表达式(regex)或操作符”|“使用易出现功能Bug的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解
- 2023-05-17我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?
- 2023-04-27我要提取text4文本中的邮箱号 正则应该怎么写?
- 2023-04-15bash shell 无法使用 perl 正则