безопасная форма электронной почты, запрос вставки заголовка - PullRequest
2 голосов
/ 01 декабря 2009

Я использую следующее для очистки ввода из моей контактной формы:

<?php
$name = strip_tags(stripslashes($_POST['name']));
//this is repeated for several other fields, then:

if(isInjected($name)) { die(); }
/* see isInjected function below */

// send the mail
?>

Я использую эту функцию:

<?php
    /* function from http://phpsense.com/php/php-mail.html */
    function isInjected($str) {
        $injections = array('(\n+)',
        '(\r+)',
        '(\t+)',
        '(%0A+)',
        '(%0D+)',
        '(%08+)',
        '(%09+)'
        );
        $inject = join('|', $injections);
        $inject = "/$inject/i";
        if(preg_match($inject,$str)) {
            return true;
        }
        else {
            return false;
        }
    }
?>

Этого достаточно для очистки моей контактной формы?

спасибо.

Ответы [ 2 ]

4 голосов
/ 01 декабря 2009

Заметьте, что код немного раздутый. Его можно легко урезать:

/* function from http://phpsense.com/php/php-mail.html */
function isInjected($str) {
    $inject = "/(\r|\t|%0A|%0D|%08|%09)+/i";
    return (preg_match($inject, $str) > 0);
}
1 голос
/ 01 декабря 2009

Кажется, претты приличны и лучше, чем средние проверки ввода. Лично я предпочитаю работать с типами ввода. В моем базовом контроллере у меня есть несколько функций, позволяющих проверить, является ли ввод данных действительной датой рождения, адресом электронной почты и т. Д. Если вы добавляете такую ​​проверку к своей существующей проверке, вы хорошо справляетесь с ней IMO.

...