最近我被告知有FILTER_VALIDATE_INT,这很好。
我的问题是从网站获取一个整数值,无论它是来自用户还是从Web应用程序生成,并通过查询字符串传递。
该值(整数)可以在mysql查询中显示或使用。
我正在尝试为此构建最佳的安全方法。
考虑到这一点,简单使用是否安全?
$myNum = (int)$_GET['num'];
或者
if (filter_var($_GET['num'], FILTER_VALIDATE_INT)) $myNum = $_GET['num'];
另外,请说明使用
(int)
和FILTER_VALIDATE_INT
有什么区别 最佳答案
区别在于,强制转换为int
总是会得到int
,它可能是原始值,也可能不是原始值。例如。 (int)'foobar'
生成int
0
。这对于大多数SQL目的而言都是安全的,但与原始值无关,您甚至都不知道。
带有filter_var
的 FILTER_VALIDATE_INT
告诉您该值是否是int
,您可以根据该值来决定在SQL查询中使用它或向用户显示错误消息。
关于php - PHP安全性-(int)与FILTER_VALIDATE_INT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4789624/