Как реализовать капчу без сессии и кукетов

1. Natali0705 (21.12.2010 / 17:18)
Какие есть способы?

2. delete (21.12.2010 / 17:23)
фишка капчи в том что код для ввода значения капчи, должен где то хранится. толи в сессии на сервере, толи в куках на кампе, но можно это записать и в файл, правда зачем эти усложнения smile

Добавлено через 06:40 сек.
только это значение нужно привязать например к ip smile

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, D а чем ты тогда данные передаеш? если не 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 смешно smile

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