什么是最好,最安全和用户友好的易于使用的验证器类或插件,我们可以在PHP编码中使用它来验证常见的用户输入,如电子邮件地址,URL,整数等?
e.g。 http://code.google.com/p/owasp-esapi-php/。还有更好的方法吗?
或者使用filter_input
最好的方式? e.g。
$value = filter_input(INPUT_GET, "value", FILTER_VALIDATE_INT,
array("options" => array("min_range" => 15, "max_range" => 20)));
还是自定义编码? e.g。
if (isset($_GET["value"])) {
$value = $_GET["value"];
}
else {
$value = false;
}
if (is_numeric($value) && ($value >= 15 && $value <= 20)) {
// run my code
}
else {
// handle the issue
}
有专家对此有何看法?我喜欢懒惰的风格,比如:
filer_input($POST);
有类似的东西吗?
答案 0 :(得分:1)
如果您不熟悉这些库,可能不是用户(开发人员)友好,但我认为您应该真正关注Symfony2 Validator Component
。它可以通过Composer轻松安装,可以单独使用,并且在这里有很好的文档:http://symfony.com/doc/current/book/validation.html,可以在这里找到GitHub存储库:https://github.com/symfony/Validator。
答案 1 :(得分:0)
如果输入验证是一刀切的话,那么XSS和SQLi攻击会减少很多:)
使用任一过滤器(优点是它附带php)或类似的第三方库(过滤器确实有一些怪癖)设置显式规则是一个好习惯。当您在数组语法中使用规则(如filter_input_array或filter_var_array)时,可以重用规则,以获取更常用的规则(自定义正则表达式等)
与自定义编码相比,使用过滤器库可以减少代码,从而减少潜在的错误。