我想知道在安全性和实用性方面什么是正确的程序。在检查变量是否已设置并为空之前,您是否应该对变量使用htmlspecialchars()?
示例:
在使用或存储帖子数据时使用htmlspecialchars():
$field = $_POST['field'];
if(isset($field)){
//store or use: htmlspecialchars($field);
}
或者你应该在检索帖子数据时使用htmlspecialchars():
$field = htmlspecialchars($_POST['field']);
if(isset($field)){
//store or use: $field
}
这可能是一个愚蠢的问题,但我想知道哪个是正确的。
答案 0 :(得分:5)
好吧,这样想吧。为什么我们首先使用isset
?答案是保护我们的代码不要试图用不存在的东西做事。
例如,在控制台中使用php -a
,您可以看到:
php > $temp
php > echo htmlspecialchars($temp);
Parse error: parse error in php shell code on line 2
php >
显然,您不希望代码抛出解析错误。因此,您需要先检查该值是否存在(使用isset
),然后使用该值执行操作。
答案 1 :(得分:0)
如果要使条件完全安全,则应同时使用isset和empty,因为isset检查是否定义了变量,并且对变量值的空检查是否为空。 所以你应该使用像这样的if条件,
$field = $_POST['field'];
if(isset($field) && !empty($field)){
//store or use: htmlspecialchars($field);
}