Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Web Ирбис и Z-Ирбис :  ИРБИС Irbis
 
Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Карауш (IP-адрес скрыт)
Дата: 20, December, 2015 08:20

Кирилл Евгеньевич, добрый день!
Появилась интересная проблема - начинают появляться записи в БД RDRV, сгенерированные роботом. В день пока таких записей немного до десятка, но начинает доставать сотрудников, а сотрудники достают меня.

Попробовал поставить javascript логику на некоторые поля формы reg.frm, но все проверки этого файла уходят пользователю открыто и могут анализироваться. Через день "товарищ спам" модифицировался и продолжил.
Попробовал поставить отсечку по конкретному IP адресу (т.к. спамит с одного и того же) в логику файла virtual_rdr.pft:

if v1100<>'' and v1100<>'146.185.234.48' then
if val(&unifor('+3JRDRV,URL=',v1100))<=0 then
/'<!FILE=virtual_rdr.frm>'/
fi,
fi,

Сейчас жду, смотрю на "товарища спама".
Но у меня есть проблема такая, что многие сервера библиотек-клиентов "сидят" за пробросом порта. И там IP всегда один определяется - от последнего маршрутизатора (или как его называют - не помню сейчас).
В общем предлагаю рассмотреть вариант, чтобы поставить еще один файл логики после того, как в форме записи нового пользователя нажата кнопка "записаться" и перед тем, как появляется новая запись в файле RDRV.


Кстати, попутный вопрос. Как я угадываю, autoin.gbl базы RDRV при появлении новой записи из формы Web-регистрации пользователя не работает (не вносит изменений)? (мой желаемый ответ - и правильно, и не нужно, чтобы он работал).

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 20, December, 2015 20:42

Александр Сергеевич, всё, что я могу предложить -- это использовать CGIFLK.PFT. Формат расформатируется шлюзом при выполнении любых команд. В принципе там можно реализовать простейший вариант защиты от роботов -- проверку проверку суммы введённых чисел.

Например, читателю будет предлагаться указать в поле сумму чисел 3+2 (например, поле SUM, сооответствующее метке поля 5100). И хэш этой суммы будет формироваться и передаваться в форме (например, поле HASH, соответствующее метке поля 5200).
В Reg.frm:

/* Первое случайное число
<? &uf('+1W901',&uf('R1')), ?> 
/* Второе случайное число.
<? &uf('+1W902',&uf('R1')), ?> 
/* Дата+значение первого числа+значение второго числа
<input name="HASH" type="hidden" value="<? &uf('+B'f(val(&uf('3'))+val(g901)+val(g902),0,0)) ?>">
<input name="SUM" value="">




В CGIFLK:

if &uf('+B'f(val(&uf('3'))+val(v5100),0,0))=v5200 and v2222:'R' then else '0'/ fi


Но учитывая, что спам-бот адаптируется к новым условиям, этого может быть недостаточно. Ведь выделить цифры, отображаемые пользователю из HTML страницы не составляет труда. Поэтому полным решением задачи может считаться только графическая капча. Однако её в WEB ИРБИС сегодня не реализовать.

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Карауш (IP-адрес скрыт)
Дата: 21, December, 2015 20:53

Спасибо, буду пробовать.

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Денисова Лариса (IP-адрес скрыт)
Дата: 22, December, 2015 08:38

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

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 26, December, 2015 14:15

Денисова Лариса написал(а):
-------------------------------------------------------
> У нас аналогичная проблема (спам) появилась
> достаточно давно в базе виртуальной справки.
> Пытались бороться разными способами (капча,
> cgiflc, отслеживали IP).

Как я понимаю, речь идёт о работе самостоятельных разработок.

Вы использовали графическую или текстовую капчу? В первом случае интересно чем Вы её генерировали и какой была технология.

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Денисова Лариса (IP-адрес скрыт)
Дата: 28, December, 2015 13:35

Кирилл Соколинский (СЗТУ) написал(а):
-------------------------------------------------------
> Как я понимаю, речь идёт о работе самостоятельных
> разработок.

Если это к вопросу о виртуальной справке, то это разработка Максима Панева, используется нами с 2010 года.
[library.sgu.ru]

> Вы использовали графическую или текстовую капчу? В
> первом случае интересно чем Вы её генерировали и
> какой была технология.

Была попытка использования графической капчи в версии ИРБИС 2009.1, на которой в то время работали. В более поздних версиях ИРБИС не пробовали.
Вот скрипт(нашелся в архивах), с помощью которого пытались решить проблему.
<script type="text/javascript"
src="http://www.google.com/recaptcha/api/challenge?k=6LedMMcSAAAAAAWrCDcvlmj4MjZvI_RjDM-E7uO6">
</script>
<noscript>
<iframe src="http://www.google.com/recaptcha/api/noscript?k=6LedMMcSAAAAAAWrCDcvlmj4MjZvI_RjDM-E7uO6"
height="300" width="500" frameborder="0"></iframe><br>
<textarea name="recaptcha_challenge_field" rows="3" cols="40">
</textarea>
<input type="hidden" name="recaptcha_response_field"
value="manual_challenge">
</noscript>

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 11, September, 2017 05:12

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

I21DBN=IBIS_REC&LNG=&R21MFN=0&R21IFP=1&R21UPD=1&P21DBN=&Z21ID=148415212014771318&R21NUM1=10&R21VOL1_1=LarrySkameGB&R21NUM2=11&R21VOL2_1=Steve+Fox&R21NUM3=12&R21VOL3_1=LarrySkameGB&R21NUM4=21&R21VOL4_1=1976-12-10&R21NUM5=19&R21VOL5_1=LarrySkame&R21NUM6=50&R21VOL6_1=%CA%F3%EB%FC%F2%F3%F0%E0+%E8+%E8%F1%EA%F3%F1%F1%F2%E2%EE.+%D1%CC%C8&R21NUM7=13&R21SUB7_1=C&R21VOL7_1=Jbeil&R21NUM8=17&R21VOL8_1=&R21NUM9=32&R21VOL9_1=tine.d.o.l%40artquery.info&R21NUM14=113&R21VOL14_1=1&R21NUM15=112&R21VOL15_1=37.115.124.229&C21COM=R

Пытался в cgiflc запихать if (v21:'-') then '0'/ else '1'/ fi, - не помогает. Может я неправильно понимаю принцип работы cgiflc?

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 11, September, 2017 08:58

auto_02 написал(а):
-------------------------------------------------------
> Подниму тему, посыпался спам, капча не помогает,
> т.к. у ботов отсутствует java и они просто шлют
> строку вида
>
> I21DBN=IBIS_REC&LNG=&R21MFN=0&R21IFP=1&R21UPD=1&P2
> 1DBN=&Z21ID=148415212014771318&R21NUM1=10&R21VOL1_
> 1=LarrySkameGB&R21NUM2=11&R21VOL2_1=Steve+Fox&R21N
> UM3=12&R21VOL3_1=LarrySkameGB&R21NUM4=21&R21VOL4_1
> =1976-12-10&R21NUM5=19&R21VOL5_1=LarrySkame&R21NUM
> 6=50&R21VOL6_1=%CA%F3%EB%FC%F2%F3%F0%E0+%E8+%E8%F1
> %EA%F3%F1%F1%F2%E2%EE.+%D1%CC%C8&R21NUM7=13&R21SUB
> 7_1=C&R21VOL7_1=Jbeil&R21NUM8=17&R21VOL8_1=&R21NUM
> 9=32&R21VOL9_1=tine.d.o.l%40artquery.info&R21NUM14
> =113&R21VOL14_1=1&R21NUM15=112&R21VOL15_1=37.115.1
> 24.229&C21COM=R
>
> Пытался в cgiflc запихать if (v21:'-') then '0'/
> else '1'/ fi, - не помогает. Может я неправильно
> понимаю принцип работы cgiflc?

Вы используете верный синтаксис CGIFLK, но из Вашего кода не совсем понятно, как должно формироваться поле 21.

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

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 11, September, 2017 09:10

Текстовую капчу пробовали, почему-то не генерирует числа.

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

Попробовал сделать проверку на пустое поле 50,
if (v50='') then '0'/ else '1'/ fi,

перестал открываться весь каталог с ошибкой флк



Редактировано 1 раз. Последний раз 13.09.2017 06:11 пользователем auto_02.

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 17, September, 2017 05:42

И снова тишина...

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 17, September, 2017 12:29

auto_02 написал(а):
-------------------------------------------------------
> Текстовую капчу пробовали, почему-то не генерирует
> числа.

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

Первое случайное число
<? g901 ?> 

Второе случайное число
<? g902 ?>


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

Из чего Вы заключили, что значения записываемых полей трансформируются в виртуальное поле V21?

Вы должны назначить соответствие параметра запроса и виртуального поля в параметрах

PARNAMEХХ=
PARTAGХХ=

INI файла WEB ИРБИС. Не рекомендую использовать двухзначные метки (21), которые могут встречаться в библиографических записях. Используйте четырёхзначные метки.



>
> Попробовал сделать проверку на пустое поле 50,
> if (v50='') then '0'/ else '1'/ fi,

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

PS
Обращаю Ваше внимание, что в соответствии с правилами Ассоциации ЭБНИТ срок ответа на вопрос может достигать 5 рабочих дней.



Редактировано 1 раз. Последний раз 17.09.2017 13:28 пользователем Кирилл Соколинский (СЗТУ).

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 18, September, 2017 08:14

Хм... видимо я все-таки неправильно понимаю принцип работы cgiflc.

Попробую перезадать вопрос так:

что мне надо прописать в этот cgiflc, чтобы регистрация пользователя с датой рождения (поле 21 базы rdrv) вида дд-мм-гггг не проходила т.е ввести проверку на наличие символа "-" в этом поле.

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



Редактировано 1 раз. Последний раз 18.09.2017 08:15 пользователем auto_02.

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 23, September, 2017 12:17

auto_02 написал(а):
-------------------------------------------------------
> что мне надо прописать в этот cgiflc, чтобы
> регистрация пользователя с датой рождения (поле 21
> базы rdrv) вида дд-мм-гггг не проходила т.е ввести
> проверку на наличие символа "-" в этом поле.

Я уже писал Вам ранее:

Цитата:
Кирилл Соколинский
Вы должны назначить соответствие параметра запроса и виртуального поля в параметрах

PARNAMEХХ=
PARTAGХХ=


Если Вы назначите параметру R21VOLXXX_1 метку 6666, то конструкция, которую Вы пытались использовать ранее бу6666дет корректной.


if (v6666:'-') then '0'/ else '1'/ fi,

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 26, September, 2017 06:17

Кирилл Соколинский (СЗТУ) написал(а):
-------------------------------------------------------

> Вы должны назначить соответствие параметра запроса
> и виртуального поля в параметрах
>
> PARNAMEХХ=
> PARTAGХХ=
>
>
>
> Если Вы назначите параметру R21VOLXXX_1 метку
> 6666, то конструкция, которую Вы пытались
> использовать ранее бу6666дет корректной.
>
>
>
> if (v6666:'-') then '0'/ else '1'/ fi,
>

PARNAME62=R21VOL4_1
PARTAG62=1488

if (v1488:'-') then '0'/ else '1'/ fi,

не работает

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 30, September, 2017 13:17

auto_02 написал(а):
-------------------------------------------------------

> PARNAME62=R21VOL4_1
> PARTAG62=1488
>
> if (v1488:'-') then '0'/ else '1'/ fi,
>
> не работает

Специально проверил -- работает. С вероятностью 99% могу предположить, что Вы не установили в INI файле
PARCOUNT=62

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 03, October, 2017 03:54

действительно работает. вроде. Специальная переменная для количества переменных, мне бы никогда в голову не пришло ее искать и менять.

Подтверждаю, все работает, спасибо



Редактировано 1 раз. Последний раз 06.10.2017 09:28 пользователем auto_02.

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 12, October, 2022 16:36

Здравствуйте. Похожая проблема, роботы создают записи с именами типа:
VictorhqvBU
И разного вида почтами, иногда с кучей точек, а иногда приемлемого вида.
Существует ли какая-то безотказная система борьбы со спаммерами?

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Карауш (IP-адрес скрыт)
Дата: 17, October, 2022 18:08

Безотказной нет, но можно робота хитростью запутать.
Сделал два поля одинаковых (год рождения) и сравниваю :)
[www.library.tomsk.ru]

Спама не было пока (года 4 как).

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 21, October, 2022 08:54

Интересная идея! А я бился с капчой, ничего не смог сделать smiling smiley

Re: Проблема (посыпался спам в регистрацию пользователя)
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 27, October, 2022 15:41

Хм... попробовал скрипт сравнивающий два поля, но регистрация все равно пролетает мимо него.

Что-то типа такого:

Цитата:
<script language="JavaScript">
$(".cor_fname").on("keyup", function() { // Выполняем скрипт при изменении содержимого 2-го поля

var value_input1 = $(".fname").val(); // Получаем содержимое 1-го поля
var value_input2 = $(this).val(); // Получаем содержимое 2-го поля

if(value_input1 != value_input2) { // Условие, если поля не совпадают

$(".error").html("Пароли не совпадают!"); // Выводим сообщение
$("#submit").attr("disabled", "disabled"); // Запрещаем отправку формы

} else { // Условие, если поля совпадают

$("#submit").removeAttr("disabled"); // Разрешаем отправку формы
$(".error").html(""); // Скрываем сообщение

}

});

</script>




Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.