PHP检查用户输入。最佳实践?

时间:2012-02-07 21:13:51

标签: php

您好我想知道检查用户输入的最佳做法是什么。

我有代码:

$currencyConverter = new CurrencyConverter( $_GET['from'], $_GET['to'], $_GET['amnt'] );

最好在发送到类之前检查用户输入是否有效,或者我应该只在方法构造函数中写一个检查?

干杯

3 个答案:

答案 0 :(得分:3)

我总是坚持尽早验证用户输入,这是一个简单的事实:

  

如果您暂时将其关闭,您将会忘记。

遵循该规则,并将消毒后的输入传递给您的模型&视图。

答案 1 :(得分:3)

对于我的所有项目,我已经引入了一项政策永远不会在任何情况下在我的代码中使用$ _GET或$ _POST变量。

相反,我有像

这样的功能
function get($name, $format) {
    switch ($format) {
#        case 'sqlstring', 'int', 'double', 'htmlstring', 'url', 'path', etc...
    }
}

此外,尽可能使用白名单!如果您只能接受三个字符串,请确保所有其他字符串都验证为false。

答案 2 :(得分:1)

您的目的关键字是“白名单”:

您应该有每个输入的所有可用值的列表。如果不是每种组合都是可能的,也可以列出所有允许的组合。

您可能还想阅读OWASP项目的这篇文章:https://www.owasp.org/index.php/Data_Validation#Sanitize_with_Whitelist