Защитить веб-сайт от PHP? - PullRequest
0 голосов
/ 04 августа 2010

Хорошо, давайте предположим, что у нас есть форма, которая позволяет людям оставлять свои комментарии.Как вы знаете, «плохие люди» могут легко спамить меня с помощью PHP Curl.Как я могу защитить свой сайт от этого, не включая капчу?Спасибо.

Ответы [ 4 ]

4 голосов
/ 04 августа 2010

Если вы имеете в виду «как защитить свой веб-сайт от доступа к программе, отличной от браузера», ответ в значительной степени «вы не можете». Браузер - это просто программа, отправляющая HTTP-запросы. Вы можете играть в игру, пытаясь отклонить HTTP-запросы, которые выглядят так, как будто они не приходят из браузера, но для любой программы (например, с использованием curl или библиотек Perl / Python / Ruby) тривиально легко имитировать заголовки, которые "настоящий" браузер отправляет.

2 голосов
/ 04 августа 2010

Обычно работает генерация случайного значения и его сохранение в сеансе пользователя. Когда я вывожу форму, я добавляю это значение как скрытый ввод.

Когда форма опубликована, сравните значение, которое публикуется, со значением в сеансе. Используйте каждое значение только один раз (поэтому измените его перед выводом формы).

Эти спам-боты, как правило, не хранят куки-файлы, что означает, что при выполнении публикации у вас нет текущего сеанса -> нет значения для сравнения, поэтому вы знаете, что что-то происходит. Если им удастся сохранить файлы cookie, они будут сталкиваться с изменением формы для каждого сообщения, и только первая отправка будет успешной. Если они загружают страницу снова каждый раз и также анализируют форму, этот метод не работает. Но я не думаю, что есть способ защититься от этого.

Естественно, это означает, что вам нужно распределять сессии для каждого посетителя на вашем сайте, что также означает хранение файлов cookie. Это либо та, либо капча, я не знаю других способов.

1 голос
/ 04 августа 2010

Самый простой способ - это использовать некоторую форму защиты с помощью капчи (reCaptcha) или заставить пользователей войти в систему, прежде чем они смогут оставлять комментарии (на самом деле это не предотвращает спам, но упрощает принятие мер против спамеров, блокируяих аккаунт).

Помимо этого вы можете также принять некоторые простые профилактические меры, т.е.ограничить количество комментариев, которые они могут выполнять в течение определенного периода времени - и, возможно, показывать капчу, только когда они превышают этот предел, чтобы определить, что они люди (как здесь, на SO).

1 голос
/ 04 августа 2010

хорошо, вы можете попробовать что-то вроде скрытого элемента управления в форме, которая содержит действительный идентификатор сессии.этот sessionid будет проверен на POST и только в случае успеха пост будет действительным.

это будет работать с / без JavaScript.джим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...