0

これらの予防策が十分かどうか知りたいです。

私は私の中にこのようなhtmlフォームを持っています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&eacute;fono</span>';
    }
...

私は後で行います:

if(empty($error)){
    mail($mail, $subject, $alimento, $headers);
}

これはもちろん単純化されていますが、その要点を示しています。

だから私の質問は:

  • 私のコードに見落としている大きな脆弱性はありますか?
  • 変数は、フォームの値としてエコーしても安全ですか?
    • 記入された入力の損失を避けるために上記を行いましたが、このアプローチは正しいですか?
  • 電子メールは適切に検証されていますか? メール機能が悪用される可能性はありますか?
  • と を使用htmlspecialcharsする必要が$alimentoありました$nameか?
    • 他の電子メール検証技術を使用する理由はありますか?
4

1 に答える 1