嗨,我想知道检查用户输入的最佳实践是什么。
我有代码:
$currencyConverter = new CurrencyConverter( $_GET['from'], $_GET['to'], $_GET['amnt'] );在发送到类之前检查用户输入是否有效是最好的,还是应该只在方法构造函数中编写一个检查?
干杯
发布于 2012-02-08 05:16:58
为了一个简单的事实,我总是坚持及早验证用户输入:
如果你在以后的中关闭它,你会忘记的。
遵循该规则,并将经过清理的输入传递回您的模型和视图。
发布于 2012-02-08 05:21:46
对于我的所有项目,我都向引入了一个策略,在任何情况下都不要在我的代码中使用$_GET或$_POST变量。
取而代之的是我的on函数,比如
function get($name, $format) {
switch ($format) {
# case 'sqlstring', 'int', 'double', 'htmlstring', 'url', 'path', etc...
}
}此外,尽可能使用白名单!如果您只能接受三个字符串,请确保所有其他字符串都验证为false。
发布于 2012-02-08 05:16:06
你的目的关键字是“白名单”:
您应该拥有每个输入的所有可用值的列表。如果不是每种组合都是可能的,还会列出所有允许的组合。
您可能还想阅读这篇关于OWASP项目的文章:https://www.owasp.org/index.php/Data_Validation#Sanitize_with_Whitelist
https://stackoverflow.com/questions/9184023
复制相似问题