首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP的ctype_digit安全性

PHP的ctype_digit安全性
EN

Stack Overflow用户
提问于 2013-10-17 03:20:48
回答 2查看 197关注 0票数 2

任何危险的东西都能通过“ctype_digit”吗?可能是像'0x‘这样的十六进制字符?

我的推理是,仅仅用数字字符就不会造成多大的伤害。

我知道“mysqli_real_escape_string”是可用的,但我认为ctype_digit更有限制性,更适合这种情况。

我通过PHP的“file_get_contents”来发送访问者的数字ID的值。

数据将被发送到MySQL查询。

我知道“file_get_contents”是另一罐蠕虫。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-17 03:34:31

ctype_digit()只允许0123456789。其他任何内容都将返回false。换句话说,如果你只允许数字,那么这个函数就会做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2022-08-24 07:16:37

在验证数据时,ctype_digit是一个安全的函数。

确保你是在给它传递一个字符串。

旧的PHP按照ascii表将ints转换为相应的字符。

所以

ctype_digit( 48 ) ==> true等价于`ctype_digit( "0“);

ctype_digit( 1234 ) ==> false --这是许多人都不会想到的事情(除非仔细阅读了文档)。

实际PHP (8.1.9)仍然存在这种行为,但会引发警告。

未来的PHP将把整数转换为字符串(根据PHP警告)。

简而言之,确保传递函数为字符串

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19417676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档