您好我想知道检查用户输入的最佳做法是什么。
我有代码:
$currencyConverter = new CurrencyConverter( $_GET['from'], $_GET['to'], $_GET['amnt'] );
最好在发送到类之前检查用户输入是否有效,或者我应该只在方法构造函数中写一个检查?
干杯
答案 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