我想知道这些预防措施是否足够。
我的index.php
:
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<select name="Alimento">
<option value="someValue">An option</option>
</select>
Nombre*:<?php echo $error['name'];?><br /><input type="text" name="fname" value="<?php echo $name; ?>"/><br />
Mail*:<?php echo $error['mail'];?><br /><input type="text" name="mail" value="<?php echo $mail; ?>"/><br />
<input id="botonComprar" type="image" src="img/comprar.png" name="submit" width="126" height="42">
</form>
现在我在文件的顶部:
if($_SERVER['REQUEST_METHOD'] == "POST") {
$alimento = filter_input(INPUT_POST, 'Alimento', FILTER_SANITIZE_SPECIAL_CHARS);
$name = filter_input(INPUT_POST, 'fname', FILTER_SANITIZE_SPECIAL_CHARS);
$mail = filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL);
if($name == '') {
$error['name'] = '<span class="errorMsg"> Ingrese su nombre</span>';
}
if($mail == '') {
$error['mail'] = '<span class="errorMsg"> Ingrese su mail</span>';
}
if($phone == '') {
$error['phone'] = '<span class="errorMsg"> Ingrese su teléfono</span>';
}
...
我后来做了:
if(empty($error)){
mail($mail, $subject, $alimento, $headers);
}
这当然是简化的,但它显示了它的要点。
所以我的问题是:
htmlspecialchars
使用$alimento
和$name
?
答案 0 :(得分:0)
我的代码中有没有忽略任何重大漏洞?
这里有很多XSS漏洞。值得注意的是,<form action="<?php echo $_SERVER['PHP_SELF'];?>"
是一种反射型XSS攻击媒介(可能与社会工程结合使用)。
此外,在mail($mail, $subject, $alimento, $headers);
中,如果根据用户输入提供了$headers
,您可能会发现自己容易受到remote code execution的攻击。</ p>
我应该为
htmlspecialchars
和$alimento
使用$name
吗?
是的,在输出而不是输入上使用ENT_QUOTES | ENT_HTML5
而不是默认值。