Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пройдёт ли робот?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: ...ну ОООООчень простой АНТИСПАМ...
DeepVarvar Супермодератор
Отправлено: 13 Января, 2009 - 04:20:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Пришла мне тут в голову идея.. Без использования GD-библиотеки.. Хотелось бы узнать ваше мнение о том что я наваял.. Мне почему-то смешно.. Но вопрос такой: пройдет ли робот?

В папке лежат картинки цифр (0-9) каждая имеет имя отпечатка md5(цифра) соответственно например: 8f14e45fceea167a5a36dedd4bea2543 .jpg


Есть форма для добавления комментария.
Поля:
1) имя
2) мыло
3) хидден-поле
4) текст

Файл antispam.php:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $contr='';//контрольная строка сначало пуста
  3. $sym=4;//кол-во контрольных цыфирок
  4. for ($sym;$sym>0;$sym--) {
  5.   $rnd=rand(0,9);
  6.   $img=md5($rnd);//получили отпечаток хэша и присвоили
  7.   $contr=$contr.$rnd;//дописали в цикле строку
  8.   print '<img width="18" height="30" border="0" src="images/'.$img.'.jpg">';//вывод рисунка
  9.   }
  10. $contr=md5($contr);//по окончании цикла получили отпечаток от полной строки,
  11.                               //это значение и будет в хидден-поле
  12. ?>


Файл инклюдим туда где надо показывать картинки.. ГЛАВНОЕ ДО ФОРМЫ!!!
При обработке сравниваем значения хидден-поля и md5(введенных цифр)..

Вот собссно и всё... Работает..

(Отредактировано автором: 13 Января, 2009 - 04:24:25)

 
 Top
Ыыы
Отправлено: 13 Января, 2009 - 05:38:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Июль 2008  
Откуда: Россия, Хабаровск


Помог: 0 раз(а)




А вы внедрите в проект, и месяца через три посмотрите, как много спама будет.
 
 Top
Джур
Отправлено: 13 Января, 2009 - 06:11:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




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

если надо могу описать принцип взлома вашей капатчи либо предложить вариант чуть более стойкий.


-----
Тамбовский каджит тебе товарищ
 
 Top
DeepVarvar Супермодератор
Отправлено: 13 Января, 2009 - 08:42:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




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

если надо могу описать принцип взлома вашей капатчи либо предложить вариант чуть более стойкий.


Стойкости добавит:

$salt='какая-то секретная строка';
$contr=md5($salt.$contr);

А сравнивать будем:

if ($contr==md5($salt.$введенные циферки)) {bla bla bla...}

Кстати если вы обьясните принцып взлома, то впредь таких ащибок делать не стану...
(Добавление)
Ыыы пишет:
А вы внедрите в проект, и месяца через три посмотрите, как много спама будет.

А вы думаете зачем я СЮДА об этом написал? Я абсолютно не уверен в стойкости этого ОООООчень простого скрипта, и в проект внедрять его не собираюсь.. Это игра такая.. Вроде бы не о чём, а внимание и сообразительность развивает.. А если честно то хотелось написать чтото на этом принцыпе нормально работающее (без GD и Header:"bla bla bla: image/jpg")..

(Отредактировано автором: 13 Января, 2009 - 09:10:27)

 
 Top
Stierus Супермодератор
Отправлено: 13 Января, 2009 - 10:47:42
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




этот код ни от чего не защитит, т.к. есть прямая зависимость между названиями файлов картинок и строкой, анализатор пишется на коленке за 2 минуты, ещё пара минут на заполнение массива соответствия названия файла с буквой. если уж хочется обойтись без gd-библиотеки, используйте логические вопросы (например, "что светлее, черное или белое", "на какой планете мы живем", "сложите 10 и 15, полученное умножьте на два" ну и в таком духе), только база вопросов должна быть огромной(ну а куда без этого Улыбка), часть из них самогенерирующиеся (арифметические, как минимум) .
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 13 Января, 2009 - 11:48:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Stierus пишет:
этот код ни от чего не защитит, т.к. есть прямая зависимость между названиями файлов картинок и строкой, анализатор пишется на коленке за 2 минуты, ещё пара минут на заполнение массива соответствия названия файла с буквой. если уж хочется обойтись без gd-библиотеки, используйте логические вопросы (например, "что светлее, черное или белое", "на какой планете мы живем", "сложите 10 и 15, полученное умножьте на два" ну и в таком духе), только база вопросов должна быть огромной(ну а куда без этого :)), часть из них самогенерирующиеся (арифметические, как минимум) .


Базу вопросов я как-то делал из детских загадок, смотрелось очень даже симпатично..

С "солью" зависимость уже не прямая, в ней ведь может быть все что угодно...
md5() необратим... Брутить? И сколько времени вы будете это делать?
 
 Top
EuGen Администратор
Отправлено: 13 Января, 2009 - 11:52:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Зачем же "брутить"... md5 уже давным давно не является надежным способом хеширования данных. Возможно, следует признать его некриптостойким. Причина тому - rainbow tables:
http://en[dot]wikipedia[dot]org/wiki/Rainbow_table
Защититься можно, но опять же не 100%


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 13 Января, 2009 - 12:07:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Цитата:
Защита от радужных таблиц
Данные таблицы невозможно использовать против необратимых хеш-функций, которые включают salt (соль). Например, рассмотрим следующую функцию для создания хеша от пароля:

хеш = MD5( пароль + соль ),
где + обозначает конкатенацию.


Это оттуда.. Я не думаю что кто-то или чт-то будет так рьяно ломать малоизвестный сайтик с никому ненужным содержанием.. Я ведь эту приблуду не собираюсь вешать на серьезный проект.. Улыбка
 
 Top
EuGen Администратор
Отправлено: 13 Января, 2009 - 12:11:15
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вы, вероятно, прочли русскоязычный вариант статьи, он несколько неточен. Затравка лишь позволяет увеличить длину исходного набора символов, и, следовательно, увеличивает сложность, а так же может исключить возможность взлома в связи с тем, что таблица расчитана на определенную длину.
Ведь, по сути, если злоумышленник может восстановить из md5 исходные данные, то, восстановив
CODE (text):
скопировать код в буфер обмена
  1.  
  2. строка+соль
  3.  

он может просто перебрать все строки, отрезая по 1 символу с конца, к примеру.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 13 Января, 2009 - 12:13:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




В любом случае защиты на 100% не бывает..
EuGen пишет:
Вы, вероятно, прочли русскоязычный вариант статьи, он несколько неточен. Затравка лишь позволяет увеличить длину исходного набора символов, и, следовательно, увеличивает сложность, а так же может исключить возможность взлома в связи с тем, что таблица расчитана на определенную длину.
Ведь, по сути, если злоумышленник может восстановить из md5 исходные данные, то, восстановив
CODE (text):
скопировать код в буфер обмена
  1.  
  2. строка+соль
  3.  

он может просто перебрать все строки, отрезая по 1 символу с конца, к примеру.


отпечаток имеет конечную длину символов...
включаем вторую соль которая будет заменять символы "a" на "f" например или работать по иному алгоритму... И 3 года 3 дня и 3 ночи бот будет заниматься подбором находясь на той странице.. А как же время жизни сессии?

(Отредактировано автором: 13 Января, 2009 - 12:38:32)

 
 Top
EuGen Администратор
Отправлено: 13 Января, 2009 - 12:51:37
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Факт то ведь не в том, что защититься совсем никак нельзя. А в том, что md5 - не есть подходящая защита. То есть при желании можно восстановить исходный текст
А всякие заменяющие и иные "соли" - это уже по сути попытка шифрования, и при этом вряд ли мы с Вами сможем (даже если захотим) придумать нечто действительно криптостойкое.
Даже наука есть такая - криптография; вооружившись ею роботописатель легко обойдет любую "соль", сделанную на коленке - был бы исходный текст, ведь по сути самым сложным будет восстановить текст из md5, так как из всех примененных механизмов защиты в этой схеме md5 по-прежнему будет самым стойким звеном (собственно, md5 придумывался не так просто - какое то время его не могли легко обойти).
Вопрос другой - стоит ли овчинка выделки. Ну так и я обобщаю на случай, если она того действительно стоит.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 13 Января, 2009 - 13:46:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Значит так: хеш, хеш(соль(хеш))... Это самое надежное из простого.
 
 Top
EuGen Администратор
Отправлено: 13 Января, 2009 - 13:50:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




md5-хеш?...
Ну тогда восстанавливаем 1-й, получаем какую-то строку. Видим, что эта строка имеет длину 32 символа и состоит из 0..f - "что-то тут нечисто" .. и делаем тоже самое снова.. и так далее.
Ладно, это все лишь к тому, что защититься md5 не даст. Уже не даст. Ну так можно использовать более криптостойкие алгоритмы. Возможно, сходу придумать вещи, где мало даже md5, не так просто, но пока что сильнее чем RSA не придумали ничего.(Правда, это уже шифрование, не одно и то же с хешированием)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Stierus Супермодератор
Отправлено: 13 Января, 2009 - 15:52:48
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Никто ничего не будет брутить, зачем ? У вас код:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3. $contr='';//контрольная строка сначало пуста
  4. $sym=4;//кол-во контрольных цыфирок
  5. for ($sym;$sym>0;$sym--) {
  6.   $rnd=rand(0,9);
  7.   $img=md5($rnd);//получили отпечаток хэша и присвоили
  8.   $contr=$contr.$rnd;//дописали в цикле строку
  9.   print '<img width="18" height="30" border="0" src="images/'.$img.'.jpg">';//вывод рисунка
  10.   }
  11. $contr=md5($contr);//по окончании цикла получили отпечаток от полной строки,
  12.                               //это значение и будет в хидден-поле
  13. ?>
  14.  

На выходе получается что-то вроде :
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <img width="18" height="30" border="0" src="images/jfyg75lkfugytr8ilwuxj.jpg">
  3. <img width="18" height="30" border="0" src="images/jfyg75lkfugytr8ilwuxj.jpg">
  4. <img width="18" height="30" border="0" src="images/jfyg75lkfugytr8ilwuxj.jpg">
  5. <img width="18" height="30" border="0" src="images/jfyg75lkfugytr8ilwuxj.jpg">
  6.  



вот сама jfyg75lkfugytr8ilwuxj.jpg ссылается на цифру, например, "3" ... значит, заранее зная, что
вот сама jfyg75lkfugytr8ilwuxj.jpg = 3 мы видим всю нужную строку "3333" ... скрипту нужны лишь пути 9-ти картинок и всё

например, скрипт знает (мы зашли и посмотрели исходник), что :

jfyg75lkfugytr8ilwuxj.jpg = 3
jfyg75lkfugytr8ilwuxk.jpg = 4
jfyg75lkfugytr8ilmuxj.jpg = 5
jfyg75lkfugytr9ilwuxj.jpg = 6
jfyg75lkfugytr7ilwuxj.jpg = 7
jfyg75lkfugytr6ilwuxj.jpg = 8
jfyg75lkfugytr5ilwuxj.jpg = 9
и тд

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

Какие хэширования и взлом, о чём вы ?Улыбка

(Отредактировано автором: 13 Января, 2009 - 15:58:51)

 
My status
 Top
EuGen Администратор
Отправлено: 13 Января, 2009 - 15:55:49
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB