我正在使用PDO的bindParam。

该功能检查网站上的每个GET变量。更改后,它将回显它:

function Check_Get_Param($val){
    $value1=addslashes($val);
    $string1=htmlspecialchars($value1);
    $string2=strip_tags($string1);
    $string3=intval($string2);
    return $string3;
}


此处将输出结果:

Check_Get_Param($_GET['id']);


现在的想法是任何id或id = any或id =%

$_GET['id'] = %将导致0,因为%不是整数。如何也允许%

如何修改此功能或可以过滤GET参数的任何其他功能,以使网络不被注射?

最佳答案

PHP 5(版本> = 5.2.0)具有一组方便的数据过滤功能。这些功能可以验证电子邮件和URL之类的常见内容,否则它们将需要复杂的正则表达式,但这些表达式通常不会起作用。这些功能是filter_var()filter_input()filter_id()等。

这样,您不必通过$ _GET或$ _POST数组来触摸原始输入。请参阅文档中提供的示例。

09-10 08:52
查看更多