任何危险的东西都能通过“ctype_digit”吗?可能是像'0x‘这样的十六进制字符?
我的推理是,仅仅用数字字符就不会造成多大的伤害。
我知道“mysqli_real_escape_string”是可用的,但我认为ctype_digit更有限制性,更适合这种情况。
我通过PHP的“file_get_contents”来发送访问者的数字ID的值。
数据将被发送到MySQL查询。
我知道“file_get_contents”是另一罐蠕虫。
发布于 2013-10-17 03:34:31
ctype_digit()只允许0123456789。其他任何内容都将返回false。换句话说,如果你只允许数字,那么这个函数就会做到这一点。
发布于 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警告)。
简而言之,确保传递函数为字符串。
https://stackoverflow.com/questions/19417676
复制相似问题