Как реализовать капчу без сессии и кукетов
1.
Natali0705 (21.12.2010 / 17:18)
Какие есть способы?
2.
delete (21.12.2010 / 17:23)
фишка капчи в том что код для ввода значения капчи, должен где то хранится. толи в сессии на сервере, толи в куках на кампе, но можно это записать и в файл, правда зачем эти усложнения
Добавлено через 06:40 сек.
только это значение нужно привязать например к ip
3.
ктулху (21.12.2010 / 17:43)
Можно передавать в GET шифрованную строку.
Из минусов: могут разобрать алгоритм кодирования
4.
delete (21.12.2010 / 17:52)
3.
ShiftBHT_есть_чо7, ну и из сессии и куков можно извлеч исходное значение))) так или иначе нужен норм алгоритм шифрования.
5.
finall2 (21.12.2010 / 18:03)
3.Ну можно жестко постараться))
Допустим 4цифры в капче,каждую цифру в md5.
Склеить строку.Добавить цифровой шум,поменять регистр.
Можно даже повырезать некоторые символы.
А с помошью функции дешифровки - убрать регистр,удалить цифровой шум,и сбрутить 4 хеша (где 1хеш - 1цифра от 1 до 9)
Геморно,но если кто-то возьмется ломать алгоритм,то скорее голову сломает. + если еще некоторые символы поменять местами...
Ну,человек с опытом в этом деле,возможно и сломает алгоритм,ну а большинство нубов - пойдет курить в сторонке.
Собственно,это настолько геморно,что лучше заюзать сессию.
6.
ктулху (21.12.2010 / 18:08)
5, а теперь скажи, как каптча угадает какие надо показать цифры, если ты там каждую цифру в md5 с солью и прочими примочками пихаешь?
Добавлено через 01:01 сек.
Я представил себе каптчу которая методом коллизий брутит 4 хэша xD
7.
Natali0705 (21.12.2010 / 18:11)
A если использовать шифрование как на куках в моторе?
Добавлено через 02:21 сек.
Но вот вопрос как зделать чтобы пользователь вернулся назад и повторно не отправил ети данные?
8.
Вантуз-мен (21.12.2010 / 18:19)
5.
ForGotTen_HHTеаm, ну да можно и так, только придется данным образом еще и сравнивать данные которые ввел пользователь
7.
Natali0705, да конечно можно так, для обычного сайта вполне сойдет, ну а так менее надежно чем в 4 посте
то есть передавать зашифрованную строку в GET и сравнивать ее с строкой в POST
2 варианта, расшифровывать GET или аналогично зашифровывать POST и сравнивать
9.
Natali0705 (21.12.2010 / 18:30)
8.
Vantuz, А зачем POST и GET
Что нельзя передать два значение например capchaworld и capchaticket?
10.
ensteyn-asen (21.12.2010 / 18:30)
<?php
$kode=rand(0001,9999);
if(empty($action))
{
ТУТ ВВОДИМ ССОБЩЕНИЕ И ВСЯ *** и $kode2
}
if($kode==$_POST['kode2']){ $kod['prov']="ok";}
if(isset($kod['prov']) && $kod['prov']=="ok" && $action=="do")
{
ТУТ ИДЕТ ЗАПИСЬ В БД
}
?>
чета типа того
11.
delete (21.12.2010 / 18:33)
9.
Natali0705, как зачем, это параметры передачи данных)) так или иначе будиш их использовать.
12.
ensteyn-asen (21.12.2010 / 18:35)
автор, а тебе нах оно ваще ? смотря для чего нужно можно альтернативу найти
13.
Natali0705 (21.12.2010 / 18:37)
10) Я от ботов пытаюсь зашитится а не от чайников
Надо шифровать еще с какимито данными Така как 10000 тысячь быстро зделают в базу кодов
Добавлено через 03:44 сек.
12.
ensteyn-asen, надо для того что бот не выполнел кучу запросов. А ссесию нельзя использовать.
Добавлено через 06:01 сек.
Пришла идейка попробую отпишу
14.
ensteyn-asen (21.12.2010 / 18:47)
13.
Natali0705, попробуй арифметическое сложение переменных
15.
Natali0705 (21.12.2010 / 18:56)
Проблема решена. Вспомнила про session_id
Добавлено через 02:17 сек.
Почему нельзя было ссесию юзать так как передача донных осуществлялась не гетом и не постом
16.
ensteyn-asen (21.12.2010 / 19:01)
15.
Natali0705, ну это чтото среднее между сессией и переменными
Добавлено через 01:04 сек.
15.
Natali0705, нужно было переменную прировнять посту
$ses=$_POST['ses'];
17.
delete (21.12.2010 / 19:15)
15.
Natali0705,
а чем ты тогда данные передаеш? если не GET & POST, вводимые данные от пользователя все равно нужно передавать одним из этих методов.
18.
ensteyn-asen (21.12.2010 / 19:30)
17.
Денис Петрович, ну наверное
<input name="msg" maxlength="60" value="" />
и мессага получается $msg ))
19.
delete (21.12.2010 / 19:40)
18.
ensteyn-asen, хз че мутит))
20.
ensteyn-asen (21.12.2010 / 19:47)
19.
Денис Петрович, нет, чтоб сессию сделать и какую-нибудь проверку ))
21.
JustZero (21.12.2010 / 20:48)
20.
ensteyn-asen, а зачем проверка сесии? или я не так понял
22.
ensteyn-asen (21.12.2010 / 21:35)
21.
ы_я_Шурик, ну как я понял, автор(ша) хочет сделать какую-нить гостю или библиотеку, но чтоб боты не могли ее спамить. для создания данного скрипта она хочет не использовать сессию, а альтернативу (ищет тяжелые пути,хз зачем).
а для того,чтоб сессию не перехватил бот можно сделать проверку какую-нибуть,логичную для человека и не логичную для бота
Добавлено через 03:52 сек.
а ведь можно сделать сессию вида
$a=rand(1,9);
$b=rand(10,20);
echo $a.'+'.$b.'=';
ввод ответа
if(($a+$b)==$otvet){
$ses=md5($otvet);
$_SESSION['ses'];
header('Location: vpipicy.php?');
}
23.
ramzes (21.12.2010 / 21:52)
ShiftBHT_есть_чо7 (21 Декабря 2010 / 17:43)
Можно передавать в GET шифрованную строку.
Из минусов: могут разобрать алгоритм кодирования
if( $SQL->query("SELECT * FROM velosiped WHERE session = '".base64_encode($ip.$ua)."';")->fetch_assoc() ){
можно и так, только похитрее комбинацию идентификатора придумать
24.
ensteyn-asen (21.12.2010 / 21:55)
такое ощущение что от мировой атаки хакеров уберечь пытются
Добавлено через 02:31 сек.
23.
ramzes, ооо... кстати... раз уж айпи тронули, то можно ботов по айпишнику отсеивать... насколько я знаю он у них какой-то специфичный
25.
smartvbxos7 (21.12.2010 / 22:00)
Можно юзеру писать в анкету капчу
26.
ramzes (21.12.2010 / 22:03)
ensteyn-asen (21 Декабря 2010 / 21:55)
такое ощущение что от мировой атаки хакеров уберечь пытются
Добавлено через 02:31 сек.
23. ramzes, ооо... кстати... раз уж айпи тронули, то можно ботов по айпишнику отсеивать... насколько я знаю он у них какой-то специфичный
зоть удосужся узнать что есть ботнет
твой комп вполне может оказаться его частью
у тебя особый ип? О_о
27.
ensteyn-asen (21.12.2010 / 23:46)
26.
ramzes, толи есть функция определения ботов, толи боты чемто от юзеров отличаюся... я уже не помню...
28.
Natali0705 (21.12.2010 / 23:59)
Дело в том что данные принимаются с referera
Я уже придумала. Как спасибо за помощь
Написала куаукукф вместо referera смешно
29.
ramzes (22.12.2010 / 02:47)
куки небезопасно,пользователь может их подменять
сессии надежнее на много
30.
Дмитрий (22.12.2010 / 08:58)
Господа. При создании каптчи НЕЛЬЗЯ использовать куки. Такая каптча подвержена взлому на раз.
Каптча ротора и мотора просто элементарно взламымается. К примеру, мой бот-спаммер ломает их как пить дать. Каптча должна генерироваться.
31.
Natali0705 (22.12.2010 / 22:24)
А ты молодец. ХАРОШЕГО бота написал!
Причем здесь генерируется? Капча на wapmotor и rotor Вобщето уязвима тем что числа не искожают, что легко извлекается.
Порозказуй здесь какой ты молодец. Я прекрасно знаю как работает капча вантуза.
32.
Вантуз-мен (23.12.2010 / 00:40)
30.
LondoN_tm, в роторе и моторе данные от капчи не хранятся в куках, они на сервере в сессии
и как только появится подозрение на расшифровку я легко модифицирую файл с генерацией капчи
33.
Дмитрий (23.12.2010 / 00:58)
Беру свои слова назад.
34.
Максим (25.12.2010 / 23:01)
Блин. Без сессий и куков это только запись либо в фаил либо в БД.
В нтмл делаем лиинк на каптчу, в которой забивается строка с ключом ip и значением, в нашем случае тупой набор символов.
Далее, юзер продолжает дсвои действия переходя к стадии проверки введённых данных. Просто заврашиваем запись с идом ip сравниванием значение с введённымы узером данных и всё)
35.
ramzes (26.12.2010 / 00:36)
собственно куки и сессии это и есть запись в файл
есть так же функции для использования собственного алгоритма хранения сессий
URL:
https://visavi.net/topics/16815