2013-11-22 12 views
1

У меня есть форма на странице, где пользователь заполняет сообщение, и когда нажата кнопка «Отправить», она отправляется через скрипт ajax в php. Там по почте() сообщение отправляется на конкретный адрес электронной почты.Как предотвратить автоматическое множественное обращение к сайту с помощью php?

Я хотел бы избежать ситуации, когда 1000-ые электронные письма отправляются через короткое время злоумышленника. Скажите, пожалуйста, если я ошибаюсь, но это будет своего рода атака DOS, и это, вероятно, позаботится сам web-сервер. Я нахожусь на общем хостинге, и я бы предположил, что большой хостинг-провайдер ограничит такое поведение, поэтому несколько автоматических обращений к моей странице будут заблокированы каким-то образом, прежде чем он ударит по моему скрипту php.

Если это не так, то какой был бы лучший способ защитить его? Я все еще не уверен на 100%, что мой хост сделает эту часть, и мне было интересно, есть ли что-нибудь, что я могу сделать из самого PHP, который поможет?

EDIT: Я думал хранить временную метку в переменной Session, но тогда, если у кого-то есть отключенные файлы cookie, сеанса не существует. Можно ли проверить, включены ли файлы cookie в браузере, а если не просто игнорировать запрос? Если coockies включены, то отметьте временную метку в сеансе и с каждым запросом сравните, например, Прошло 5 секунд перед отправкой электронной почты?

+0

Вы используете CAPTCHA? – user4035

+0

нет, не можете использовать captcha – spirytus

+0

, возможно, проверьте адрес электронной почты, который отправляется каждый раз? – J2D8T

ответ

0

Вы можете предотвратить это как со стороны, клиент и сервер

на стороне клиента, сначала создать флаг, чтобы проверить, если форма будет отправлена ​​VI Ajax вызова или не

var flag = false; // name for flag var according to your requirement 

//check if for is sent or not 

if(!flag){ 
    $.ajax({ 
    //set properties 
    ..... 
    success: function (response){ 
     // set flag as true 
     flag = true; 
    } 
    }); 
} 

это предотвратит для нескольких для представления для одного пользователя, если если пользователь обновить страницу

Теперь предположим, что пользователь попробуйте обновить страницу и представить форму несколько раз

затем на стороне сервера создать переменную флаг в базе данных для электронной почты пользователя

e.g subscription table 

    user_email { true , false } default false //for each email id which sent via that form 

и сделать это верно, если пользователь электронный идентификатор не найден в этой таблице

с помощью этого процесса вы предотвратить проблему.

надеюсь, что это вам поможет

 Смежные вопросы

  • Нет связанных вопросов^_^