最近我被告知有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/

10-12 00:22
查看更多