0

多くのチュートリアルを読んだ後、私は安全な側にいることを確認したい.

私はこのようなコンタクトフォーミュラーを作りました

<form name="contakt" accept-charset="UTF-8" method="post" action="./mail.php">
<input type="text" name="name" />
<input type="text" name="email" />
<input type="text" name="tel" />
<input type="submit" value="Send" name="submit" />
<textarea name="message"></textarea>
</form>

名前とメッセージが空ではなく、スペースだけでなく、jQuery を介して検証します

次のスクリプトを使用してjquery経由でメールをチェックします

function ismailornot(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}

変数が渡され、mail.php を使用している場合、スクリプトの先頭で $_SERVER['HTTP_REFERER'] をチェックし、それらの変数が自分のスクリプトからのものかどうかを確認するだけで十分ですか? または、 $_SERVER 変数も変更できますか?

それとも、基本的に、渡されたすべての変数をもう一度チェックして、安全な側に置く必要がありますか?

例: http://www.w3schools.com/php/php_secure_mail.asp このスクリプトは注射に対して 100% 安全ですか?

私を助けてくれてありがとう:)

4

2 に答える 2

2

方法:渡されたすべての変数をもう一度チェックして、安全な側に置いてください

于 2014-07-09T19:41:38.790 に答える
1

あなたのニーズに合うようにいくつかの改造の後にこれを試してみてください。ラリー・ウルマンの本の一部です:

 function spam_scrubber($value) {

    // List of very bad values:
    $very_bad = array('to:', 'cc:', 'bcc:', 'content-type:', 'mime-version:','multipart-mixed:', 
    'content-transfer-encoding:', '<script>');

    // If any of the very bad strings are in 
    // the submitted value, return an empty string:
    foreach ($very_bad as $v) {
        if (stripos($value, $v) !== false){ return '';}
    }

    // Replace any newline characters with spaces:
    $value = str_replace(array( "\r", "\n", "%0a", "%0d"), ' ', $value);

    //remove html tags:
    $value = htmlentities($value,ENT_QUOTES);

    // Return the value:
    return trim($value);

} // End of spam_scrubber() function.

// Clean the form data:
$scrubbed = array_map('spam_scrubber', $_POST);

if(isset($from)) {
    $from = $scrubbed['from'];
}else{
    $from = '';
}

// Minimal form validation:
if (!empty($from) && !empty($scrubbed['comments']) ) {

    // Create the body:
    $body = "Name: {$from}\n\nComments: {$scrubbed['comments']}";
    $body = wordwrap($body, 70);

    // Send the email:
    mail('YOUR_EMAIL', 'Contact Form Submission', $body, "From: {$from}");
 }
于 2014-07-09T20:09:29.207 に答える