?

Log in

No account? Create an account
kot

kotm


Скутеровод-любитель

...и вообще немного о жизни Матроскина...


Previous Entry Поделиться Пожаловаться Next Entry
Хакерский тест
kot
kotm

Для фана и для убивания лишнего времени вашему вниманию представляется Хакерский тест. :)

Здесь вы можете оставлять свои комментарии и пожелания. Вероятно, какие-то вопросы теста вам покажутся нелогичными, неправильными, нерешаемыми, — чтож, пишите, попробуем разобраться. Однако прежде, чем вы начнете утверждать, что «тест глючит — я пишу правильный ответ, а мне говорит, что взлом неудачен!!», посмотрите на таблицу победителей и подумайте: а действительно ли ваш ответ правильный? ;)

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

Несколько условий: не нужно здесь указывать правильные или неправильные ответы, и не нужно материться. Такие сообщения будут либо скрываться, либо удаляться.

Не нужно просить подсказать решение — удалять буду сразу. Надоело.

Не нужно говорить «У Васи на этот вопрос подошел один ответ, а у меня он не подходит!». Поверьте, у Васи был другой вопрос. Такие комментарии я тоже удаляю.

Принимаются только дельные замечания и предложения, ну и еще благодарности (надо же мне хоть как-то утешаться, что не все плохо!).



Прежде, чем что-либо написать, взгляните на замечания к нововведениям, а так же проверьте, не найдется ли объяснение вашей проблемы ниже, в ЧАстых ВОпросах. Потому что вопросы из ЧАВО я решил просто удалять. Почему у меня должно быть время читать и отвечать на все возмущенные комментарии, а у вас нет времени прочитать пару абзацев? Нелогично, господа... :)

Это что, тест для детей, почему такие простые вопросы?
Все вопросы в этом тесте намеренно сделаны простыми, чтоб прохождение теста было для удовольствия, а не для головной боли.

Автор, у тебя кривые руки! Почему нельзя сделать регистронезависимые ответы?
Уважаемый, кривые руки как раз таки у вас, раз не можете отследить закономерности регистра в исходном слове! Или, может, вы сейчас начнете возмущаться, что я не сообщаю вам правильный ответ после 20 неудачных попыток? Тест называется хакерским не только из-за маркетинговых соображений, подумайте над этим.

Зачем здесь столько рекламы??
Баннеры здесь висят вовсе не для того, чтобы вас раздражать, поверьте. К тому же их разумное количество — 1 шт. Я был просто вынужден повесить рекламу, чтоб этот сайт начал мне приносить хоть какую-то прибыль, а не только проблемы с хостером и головную боль из-за недосыпаний.

Я ничего не вижу на 10-м вопросе, хотя мне говорили, что там должна быть какая-то картинка.
Знаю, что многие пользуются банерорезками — не могу вас судить за это, это ваше право и ваше решение. Только не надо в этом случае спрашивать меня «почему на десятом вопросе я ничего не вижу??». Это ваше программное обеспечение (браузер, банерорезка) вам не хочет правильно показывать содержимое сайта, а я тут не при чем. Почти. ;)

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

У вас неправильный ответ для перехода на 19-й вопрос!
А вы спросите у своей школьной учительницы, которая вам во втором классе математику преподавала, почему ответ именно такой, а не другой...

Как вы смеете называть этот тест «хакерским»?
Тем, кого коробит использованное в названии теста слово «хакерский»: господа, у вас есть замечательный шанс пройти тест не как все, а по-своему, по-хакерски. ;) Доказательством вашего непревзойденного умения решать настоящие хакерские тесты послужит ваш ник (или емыл), указанный в таблице победителей жирным красным цветом. :)

P.S. Только не надо специально валить сервер. Для этого особо мозгов не требуется. Это сможет сделать любой ламер, если поднапряжется чуток.



  • 1

УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

Ура! я его прошла! автору огромное, огроменное, огромнейшее спасибо!!! пиши и делай такие тесты по-больше. я заставила свои мозги работать не спав целую неделю и все время обдумывая какой-либо вопрос... супер! один 11 вопрос чего стоит! СПАСИБО!!!!!

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

я уже две недели почти не сплю из-за этого теста... :( поэтому благодарен вам за такой хороший отзыв.

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

всегда рада поддержать хорошего человека... а от чего не спишь уже 2 недели?

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

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

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

бедняга... сочувствую тебе... как говорилось в одно книжке: ох, не легкая эта работа из болота тащить бегемота

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

А вот, кстати, к вопросу об эффективности. Ни разу не понял зачем там БД нужна. Это ж очевидно дополнительная нагрузка на сервер, тогда как все вопросы можно было банально выложить в текстовички на диске и выбирать просто по номеру. С базой у тебя образуется ботлнек на методе connect, там все гурбьой и встают в лок (либо банально реджектятся). Убираем базу, упрощаем логику проверки ответа до "считал файл, сравнил содержимое с ответом, сделал редирект" и все начинает просто аццки летать :)

Теоретически даже от пхп сессий можно отказаться, но придется поизвращаться. Честно сказать, навскидку хороших (неломаемых) решений пока и не приходит, но идеи в прицнипе понятны: передавать зашифрованую (не захешированую!) куку, где закодирован текущий вопрос, время, рандомная часть и что-то клиент-специфичное (ИП, браузер и т.д.). Подломить такую куку будет крайне сложно, а кто сможет - на красный шрифт сможет претендовать заслуженно :)

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

а как вы предлагаете НА СТОРОНЕ клиента проверять эту куку? в любом случае это открытый алгоритм.

и почему вы решили, что хэш -- это, собственно, не есть кодирование информации?

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

а как вы предлагаете НА СТОРОНЕ клиента проверять эту куку?
Зачем на стороне клиента это обрабатывать?! Задача клиента куку принять, а потом запостить вместе с ответом. Клиенту ровным счетом наплевать на то что это за кука и что в ней как закодировано. Это волнует только сервер и, откровенно говоря, только он и может эту куку разобрать. Точнее должен только он, а вот как это сделать - вопрос серьезный. Простой ответ "сделать ключ подлиннее" не годится по соображениям производительности (впрочем тут потестить надо, возможно это все-таки окажется более приемлемо чем хранение и обработка тысяч сессий).

в любом случае это открытый алгоритм.
RSA и GOST - вполне себе открытые алгоритмы, но это не дает возможности легко ломать зашифрованную ими информацию. Беспокоится надо не об открытости алгоритма, а о закрытости и сложности подбора ключа (который знает только сервер и более никто). Уповать исключительно на закрытый алгоритм есть серьезная ошибка - рано или поздно любой алгоритм вскрывают (так или иначе).

и почему вы решили, что хэш -- это, собственно, не есть кодирование информации?
Я так не решал, это Вы решили, что я так решил :) Я лишь уточнил, что нам требуется именно шифрование, а не хешировние, т.к. сервер должен иметь возможность восстановить содержимое куки. Очевидно, если кука будет хешем, то восстановить из нее информацию мы не сможем. Ну, если только сами на сервере не займемся брутфорсом 8)

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

обработка на стороне клиента мне нужна для снижения нагрузки на сервер. у меня в конфиге даже ключ такой есть -- использовать_мд5.

на основании этого все ваши рассуждения выше не имеют смысла применительно к снижению нагрузки...

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

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

обработка на стороне клиента мне нужна для снижения нагрузки на сервер.
В путаете две принципальные вещи. Я предлагал передавать куку, в которой зашифрован текущий вопрос. И исключительно для того, чтобы отказаться от сессий - нкиаких пересечений с Вашми мд5 хешем тут нет и использовать их можно независимо. Сейчас, как я понимаю, текущий вопрос юзера хранится в пхп-сессии, которая в свою очередь лежит на диске. Значит любая попытка ответа приводит к: 1) чтению сессии; 2) конекту к БД.

Отказавшись от сессий, мы уберем пункт первый. В теории, можно даже попытаться вычитать все верные ответы при первом заходе и дальше этой огромной кукой кидаться. Но тут боюсь встанет ряд проблем - размер куки не бесконечен и можно банально не поместиться (вроде 4кб, но не уверен).

Во втором случае даже если использовать пул, все равно остается проблема с одновременным исполонением около 1к запросов. Так что БД убирать надо - это факт. Не обязательно убирать ее вообще: результаты вполне можно там хранить - к ним обращения единичные. Статистику можно писать на манер логов (пхп имеет хорошие средства для этих целей) и так же обрабатывать (т.е. джобом суммировать и сливать в базу).

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

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

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

теперь хотелось бы на некоторых моментах остановиться -- вы уж извините, я мало сплю в последнее время, немного не до соображаловки... :(

Значит любая попытка ответа приводит к: 1) чтению сессии; 2) конекту к БД.
да, в случае если ответ правильный (т.е. если он прошел проверку на стороне клиента).

1. по поводу отказа от сессий: а вы уверены, что процедура какого-либо алгоритма кодирования будет работать быстрее считывания массива из обращения к сессии?

2. по поводу "джомба" -- можно ли поподробнее или ссылку? прошу прощения за "лень", но сам я ограничен временем... :(

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

по поводу отказа от сессий: а вы уверены, что процедура какого-либо алгоритма кодирования будет работать быстрее считывания массива из обращения к сессии?
Не уверен, но имею сильное подозрение что это так. Простая выкладка: среднее время доступа современных дисков ~9мс, т.е. это уже минимальное время исполнения скрипта вне зависимости от его реальной сложности. Можно смело полагать, что все активные сессии (а их явно больше 1000) в дисковый кеш не поместятся и стало быть быстродействие диска выходит на первое место. На VPS, который я одно время арендовал, максимальная скорость передачи вообще составляла 2.3 Мб/с и любые операции с диском были крайне дороги (почему и пришлось свести их число к минимуму). Так что, у меня есть серьезные причины полагать, что даже шифрование с очень длинным ключом (32 символа я считаю вполне достаточно) окажется более эффективно чем чтение сессии. Но чтобы быть уверенным я бы порекомендовал провести тест: замерить время исполнения обычной страницы в режиме полной загрузки сервера и страницы без использования сессии. Для совсем уж чистого эксперимента неплхо бы вообще отключить использование сессий (т.к. даже если страница не использует сессии, движок все равно полезет ее искать).

по поводу "джомба" -- можно ли поподробнее или ссылку? прошу прощения за "лень", но сам я ограничен временем...
"джоба" :) А если точнее, то "job". Смысл прост как три копейки: по расписанию стартует некий скрипт (он и есть в данном случае джоб), который читает накопившиеся логи, парсит их и суммарную информацию сливает в базу. В нашем случае это нужно для обновления статистики, которая совершенно очевидно не требуется в реальном времени. Достаточно запускать джоб раз в 10-15 минут, причем делать это можно даже на своей локальной машине (выкачивая туда логи). Разумеется, джоб должен запоминать какую запись лога он обработал в последний раз, чтобы в следующий запуск начать с этого места. Файлы логов лучше именовать по числам, чтобы каждый день начинался новый файл - с большими логами работать приятного мало. Если чуток поразмыслить, то можно придумать такой формат лога, чтобы он с одной стороны имел всю нужную нам информацию, с другой был бы по формату идентичен логам апача - это бы позволило для их анализа использовать имеющиеся тулзы (коих тьма тьмущая). Кстати, если бы каждая страница имела уникальное имя (а это не так сложно сделать), то много сведений можно было бы почерпнуть просто из лога апача, используя тулзы анализа типа awstats, analog или majordomo.

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

по поводу сессий -- проверю, спасибо.

по поводу job -- да, немного не то прочитал, спал уже. :)

наверно, я все-таки не то хотел узнать. вы говорили, что php позволяет использовать какой-то очень уж удобный метод работы с файлами аля логи. например, банальные fopen fwrite и т.д. не очень-то применимы -- там ведь и файл может лочиться, и все такое...

Re: УУУУУУРРРРРАААААА!!!!!!!!!!!!!!!

вы говорили, что php позволяет использовать какой-то очень уж удобный метод работы с файлами аля логи.
Функция error_log().
Когда хотим вывести строку в лог, просто пишем:
error_log("My text\n", 3, "/var/log/myTest.log");
Собсно и все. ПХП сам занимается открытием закрытием файла и прочими делами.

  • 1