• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Цифры для валидации форм Web от спама?

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
В вебформе требуется проверять тестовое поле для защиты от спама. Обычно показывают картинку с цифрами.

Что-то похожее есть везде при регистрации, на форумах и пр.
На Notesnet.ru видел тоже. Вот любой форме на например
внизу код подтверждения под картинкой...

Еще ветка моя здесь
И варианты решения здесь

Все же валидация по картинкам правильнее.
Может кто выручит готовым шаблоном с формой?
Есть ли у кого готовое или линк буржуйский на скриптец или собако формулу?
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
А если упростить?
Вот поизучал тему.
Например пример использования простой математической капчи

или

И таких везде на форумах много...
Где найти исходник капчи для формы?
 
E

EHT

NetWood

Обратите внимание на использует
тут "поделка" (архив recaptcha.rar) по материалам статьи:
Посмотреть вложение recaptcha.rar

ПС. сорри, делал с "колен", поэтому в боевых условиях потестить не удалось... надеюсь кто поможет... :ph34r:
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
тут "поделка" (архив recaptcha.rar) по материалам статьи:
Посмотреть вложение 1577
Ок! Спасибо.

Предварительно упростил себе задачу. Сделал математическую капчу так (надо в поле ввести сумму цифр):
Брать вычисляемое значение из формы в WQS не катит, поскольку оно пересчитывается.
Поэтому в форме поставил доп. HTML стороку. Это нужно для того чтобы передать значение по WQS в агент и там обработать session.DocumentContext
<input name="DocUNID" type="hidden" value="<Вычисляемое значение=@DocumentUniqueID>">

n1 и n2 позиции цифр в капче. ставим по усмотрению. Это усложняет определение цифр.
Например, n1=1 n2=3
Вычисляемый текст в форме
-----------------------
rn:=@Trim(@ReplaceSubstring(@DocumentUniqueID;"A":"B":"C":"D":"E":"F":"0"; ""));
poz1:=@Right(@Left(rn;n1);1);
poz2:=@Right(@Left(rn;n2);1);
confirm1:=@TextToNumber(@Right(@Left(rn;@TextToNumber(poz1));1));
confirm2:=@TextToNumber(@Right(@Left(rn;@TextToNumber(poz2));1));
"Значение "+@Repeat("| ";confirm1)+" плюс "+@Repeat("| ";confirm2) + " = ?"
далее поле
confirm для ввода на форме

в агенте по WQS
-----------
Set db = session.CurrentDatabase
Set note = session.DocumentContext

''==== вычисляем капчу из сохраненного DocUNID
Dim array(1 To 7) As String
array(1) = "A"
array(2) = "B"
array(3) = "C"
array(4) = "D"
array(5) = "E"
array(6) = "F"
array(7) = "0"
Dim ret As Variant
ret = Replace(note.DocUNID(0),array, "")
Dim poz1 As String, poz2 As String , num1 As String, num2 As String , sum As String
poz1$ = Right$(Left$(ret, n1),1) ' позиция первой цифры
poz2$ = Right$(Left$(ret, n2),1) ' позиция второй цифры
num1$ = Right$(Left$(ret, Ccur(poz1$)),1) ' первая цифра
num2$ = Right$(Left$(ret, Ccur(poz2$)),1) ' вторая цифра
sum=Cstr(Ccur(num1$)+Ccur(num2$)) ' собственно капча
''=== конец капчи

If note.confirm (0) = sum Then
....
''-- отправить майл например
....
Else
''-- присвоить полю confirm = SPAMBOT
''-- в поле $$Return формы проанализировать confirm. Если не SPAMBOT - вывести док, иначе обратно форму.
''-- и далее прорезать другим агентом все новые доки со значением confirm=SPAMBOT

Можно не отрезать буквы от 32 unid, а преобразовывать в цифру. Выводить не только цифры для суммы, а палочки как у меня в примере или из штатного /icons/ мелкие картинки для подсчета. Умножать например. Поменять имя DocUNID на не поймешь какое. В общем простор для фантазии для очеловечивания задачи, а для робота непроходимый лес...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!