Есть ли способ различить между кликом JavaScript и реальным кликом пользователя - PullRequest
0 голосов
/ 09 декабря 2010

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

Проблема в том, что пользователь может написать скрипт для быстрой отправки спама. Есть ли способ запретить JavaScript запускать событие click?

Я могу установить контроль над потоком, но я не могу использовать слишком вопиющий, не нарушая функциональность чата.

Спасибо

Ответы [ 4 ]

2 голосов
/ 09 декабря 2010

Проблема в том, что пользователь может написать скрипт для быстрой отправки спама

AFAIK Вы не сможете различить клики по JavaScript и клики пользователей.

Лучше всего будет проверить данные, которые отправляются.

0 голосов
/ 15 мая 2012

Вы можете проверить свойство event.which, которое должно содержать код клавиши (для мыши, обычно это 1, 2 или 3) кода для нажатой клавишиЕсли это свойство не существует, то, скорее всего, это событие щелчка JavaScript вместо щелчка мышью пользователя.

if (event.which != null) {
    // likely was user click
}
0 голосов
/ 09 декабря 2010

Если ваше намерение состоит в том, чтобы запретить пользователям делать вредные вещи, очень плохо проводить проверки на стороне клиента. Всегда есть способ обойти это. Единственный надежный способ - это проверить на сервере.

Вы можете просто иметь две переменные для пользователя: счет спама и отметку времени последнего сообщения. Всякий раз, когда пользователь публикует новое сообщение, подсчитайте, сколько времени прошло с момента его последнего сообщения, и немного уменьшайте счет за каждую секунду, но увеличивайте его на фиксированное значение для каждого отправленного сообщения. Как только он достигнет порога, запрещайте новые сообщения, пока он снова не уменьшится.

0 голосов
/ 09 декабря 2010

Если вы действительно хотите иметь некоторую проверку, чтобы остановить автоматическую отправку, вы можете добавить проверку изображений, которую делают все веб-сайты.

Пользователь должен ввести изображение, которое он видит, чтобы продолжить, я не знаю технического имени этого изображения.

Это может остановить пользовательские автоматизированные задания

...