司博文 avatar

验证ip地址的正则真的有点弱

🕚 by 司博文

/(\d{1,3}.){3}\d{1,3}/ 这个正则只是能验证个形式, 改进一下吧

💘 相关文章

评论

共12条关于"验证ip地址的正则真的有点弱"的评论

jat001 avatar
#1 jat001 回复

就是验证个形式,你想怎么改?

司博文 avatar
#2 司博文 回复

ip地址是有规则的, 255是最大了。 我没别的意思, 就是看见了, 提醒一下

司博文 avatar
#4 司博文 回复

/((([1-9])|((0[1-9])|([1-9][0-9]))|((00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))).)((([0-9]{1,2})|(([0-1][0-9]{2})|(2[0-4][0-9])|(25[0-5]))).){2}(([1-9])|((0[1-9])|([1-9][0-9]))|(00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))/

以前写的, 测试过, 可能还存在错误, 但仅供参考。

jat001 avatar
#5 jat001 回复

@司博文 BAE 上只有 HTTP_X_FORWARDED_FOR 能获得用户的真实 ip,而 HTTP_X_FORWARDED_FOR 是可以伪造的,这里的判断只是为了防止 SQL 注入。 如果不是伪造的,根本不需要判断;如果是伪造的,符合 ipv4 又有什么意义? 越复杂的正则越容易出问题,也降低了程序效率。

ego008 avatar
#7 ego008 回复

@jat001 顺便在这里再说一下上次提到的《关于 HTTP_X_FORWARDED_FOR》 https://www.youbbs.org/t/1012 的注入问题,在7 楼回复里已提到,目前还没有把用户ip 的变量加入到sql 语句中,这样被注入的风险应该很小。

顺便贴一个阅读时看到的简单正则 preg_match("/[\d.]{7,15}/", $realip, $onlineip);

jat001 avatar
#9 jat001 回复

@ego008 我计划加个记录用户 ip 的功能,所以这里做了判断

司博文 avatar
#10 司博文 回复

@jat001 网上获取到的用户ip有时候不是真实的用户ip, 我们学校的出口IP都一个样。

jat001 avatar
#11 jat001 回复

@司博文 就是为了获取这个出口 ip,其他获取 ip 的方式在 BAE 上都只能获取 BAE的内网 ip。

写一条评论

Based on Golang + fastHTTP + sdb | go1.17.6 Processed in 0ms