невидимая капча - PullRequest
       7

невидимая капча

2 голосов
/ 15 февраля 2010

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

  1. сгенерируйте результат md5 с фиксированной солью на числе x и отобразите его внутри формы как скрытое поле
  2. генерирует 2 скрытых поля a и b, где a + b = x, a и b незашифрованном
  3. после отправки используйте javascript, чтобы добавить еще одно простое скрытое поле c где с = а + б
  4. на стороне сервера примените md5 на c с солью, сравните его с зашифрованным х

Однако такая система взломана на производстве, один человек смог автоматически автоматически отправить тысячи форм. Есть идеи как?

Один из способов сделать это состоит в том, что хакер уже знает, что операция + (это легко узнать с помощью javascript), прочитайте форму и добавьте a и b, создайте новую форму с дополнительным полем c, где c = а + б. Сначала он должен прочитать форму, а затем создать ее для отправки.

Мои вопросы:

  1. Является ли гипотеза, которую я изложил выше, вероятным способом сломать мою систему?
  2. Если так, что я должен сделать, чтобы предотвратить этот тип взлома?
  3. Какие еще альтернативные взломы может использовать хакер?

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

Ответы [ 4 ]

5 голосов
/ 15 февраля 2010

Кроме того, хакер может просто выполнить ваш javascript самостоятельно .

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

1 голос
/ 15 февраля 2010

Следующим шагом будет увеличение требуемых вычислений; сделать невозможным слишком быстрое предоставление форм. Попробуйте посмотреть на HashCash .

0 голосов
/ 19 августа 2012

Ваша система не работает, потому что злоумышленник (и) просто выполняет ваш JavaScript. Если вы хотите использовать похожую схему, которая предотвратит автоматическую отправку, вам нужно установить коэффициент рабочей нагрузки на клиента. Это не остановит автоматическое ПО от возможности отправки на ваш сайт, но замедлит их и увеличит стоимость атаки. Цель состоит в том, чтобы увеличить стоимость и замедлить их настолько, чтобы атака не стояла. Вместо того, чтобы пытаться создать его самостоятельно, попробуйте использовать сервис подтверждения работы .

0 голосов
/ 15 февраля 2010

Я не могу дать совет в вашем конкретном случае, но у Django есть несколько хороших подходов, как можно подавить спам в полях комментариев без капч: Хорошие подходы здесь .

...