Нелегальные персонажи в POST. Возможная ошибка попытки внедрения электронной почты - PullRequest
1 голос
/ 30 января 2012

Борьба с этим.

Я настроил базовую форму электронной почты / запроса для клиента, использующего Wordpress (Форма быстрой безопасной связи - Майк Чаллис, который я использовал раньше без проблем).

Я проверил его с различными электронными письмами - заставил других протестировать - Все хорошо.

Передано клиенту для одобрения, и его адрес электронной почты (два из них) создает ошибку: Недопустимые символы в POST.Возможная попытка внедрения электронного письма

Один из них - это электронная почта BT, другая - Gmail.Я снова проверил с BT и Gmail все отлично для моих адресов - я пробую его снова и ту же ошибку.

У меня действительно был защищен пароль учетной записи во время тестирования настолько отключен, что, чтобы увидеть, была ли это проблема, но делаетбез разницы.

Там довольно много кода, поэтому я не буду вставлять его, пока кто-то, кто сразу узнает, почему это так.

В моей исходной форме были некоторые настройки (только визуальные), нодаже при возврате самой простой новой установки плагина та же ошибка - только с адресами электронной почты клиентов.Неловко.

Буду очень признателен за ваши догадки.

Спасибо

1 Ответ

1 голос
/ 30 января 2012

Я нашел этот код в плагине (строка 1433 и далее в последней версии плагина WordPress):

// check posted input for email injection attempts
// Check for these common exploits
// if you edit any of these do not break the syntax of the regex
$input_expl = "/(content-type|mime-version|content-transfer-encoding|to:|bcc:|cc:|document.cookie|document.write|onmouse|onkey|onclick|onload)/i";
// Loop through each POST'ed value and test if it contains one of the exploits fromn $input_expl:
foreach($_POST as $k => $v){
    if (is_string($v)){
        $v = strtolower($v);
        $v = str_replace('donkey','',$v); // fixes invalid input with "donkey" in string
        $v = str_replace('monkey','',$v); // fixes invalid input with "monkey" in string
        if( preg_match($input_expl, $v) ){
            return __('Illegal characters in POST. Possible email injection attempt', 'si-contact-form');
        }
    }
}

Ошибка возникает, когда хотя бы одно из опубликованных полей содержит недопустимое значение где-либо в строке. Наиболее вероятными кандидатами, которые вызывают эту ошибку на адресах электронной почты, могут быть onmouse, onkey, onclick и onload. (Обратите внимание, что слова «осел» и «обезьяна» разрешены.) Вы должны проверить значение $v непосредственно перед оператором возврата, чтобы вы могли определить, какой раздел вызывает ошибку, а затем решить, как решить проблему.

        if( preg_match($input_expl, $v) ){
            var_dump($v); exit(); // <-- add this for testing
            return __('Illegal characters in POST. Possible email injection attempt', 'si-contact-form');
        }
...