Рандомная статья

Рандомная статья

Большинство современных сайтов, хранящих клиентскую информацию, используют системы авторизации (идентификации) пользователя. Существуют несколько наиболее распространенных сценариев авторизации:

1. Наиболее распространенный – авторизация пользователя на конечном сайте, используя пару «логин – пароль». В базе данных такая пара хранится обычно в виде логина в открытом доступе и пароля зашифрованного с помощью некого алгоритма хеширования (md5, sha* и т.д.). Пароль практически никогда не хранится в базе данных в открытом виде.

2. Так же распространенный, как и первый способ авторизации – открытые API сторонних сервисов (facebook, vkontakte, openID и т.д.). В данном случае логин/пароль хранятся на стороннем сервисе, и избавляет пользователя от головной боли в виде регистрации, а разработчика, в свою очередь, от необходимости задумываться о большинстве аспектов безопасности.

3. Наименее распространенный способ – кроссдоменная авторизация (в данный момент используется на habrahabr). Логику работы можете посмотреть там же.

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

Рассмотрим ситуацию на примере четырех паролей:

Если хотите, можете продолжить.

Теперь вернемся к «традиционному» способу. Функция RAND генерирует псевдослучайное число с плавающей точкой в диапазоне от 0 до 1.

Термин «псевдослучайное» означает, что такое число вычисляется с помощью некоторого арифметического алгоритма. То есть при одинаковых начальных (входных) условиях получаемое число будет одним и тем же. Эти начальные условия могут быть заданы явно с помощью аргумента функции, которым может быть любое число типа tinyint, int или smallint, или неявно. В последнем случае аргумент опускается, в результате чего начальное значение будет выбрано Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server.

Попробуем выполнить следующий запрос:

Консоль Выполнить

Я делаю это, используя других людей script на своей веб-странице, как я не могу полагаться на эту случайную пересылку сайта script и сделать свой собственный?

Есть два способа сделать это:

    Создайте свой собственный spider, который собирает огромную коллекцию веб-сайтов и выбирает из этой коллекции.
    Доступ к уже существующей коллекции веб-сайтов и выбор из этой коллекции. Например, DMOZ/ODP позволяет загружать всю свою базу данных; * у Google был настроенный URL-адрес произвольного сайта; ** и т.д.

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

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

* Обратите внимание, что ODP — довольно маленькая база данных по сравнению с чем-то вроде Google или Yahoo, потому что это прежде всего редактируемый человеком сборник значимых веб-сайтов, а не созданная автоматически коллекция всего, что кто-то разместил в Интернете.

** Функция случайного сайта Google определялась как популярностью, так и собственной историей поиска. Однако, загрузив пустую историю поиска, вы можете удалить эту часть уравнения. Во всяком случае, я не думаю, что он существует больше.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Незашифрованный пароль md5 Время разбора хэша
123456 e10adc3949ba59abbe56e057f20f883e 15 секунд
Test123456 126cfbcd4d16ae6d25c9bfcae76d8ee4 3 минуты (был в базе)
138866429390 64935ce1862aa84c2a2513bec14bc792 2 часа 10 минут
e*sT8An6q; } return pwd; } function escapeHtml(text) { //Функция для экранирования спецсимволов return text .replace(/&/g, «&») .replace(//g, «>») .replace(/»/g, «»») .replace(/’/g, «‘»); } var chars = {};:№?»]; //Коллекция символов jQuery(«#generate»).click(function () { //Генерация паролей ко плику if (jQuery(«input.innerVars:checked»).length > 0 && jQuery(«#countpwd»).val() > 0 && jQuery(«#countsymb»).val() > 0) { var genspwd = », symb = », obj = jQuery(«input.innerVars:checked»); for (var j = 0; j < obj.length; j++) { symb = symb + chars.value]; } for (var j = 0; j < (jQuery(«#countpwd»).val()); j++) { genspwd = genspwd + ‘

‘ + escapeHtml(getpwd(symb, parseFloat(jQuery(«#countsymb»).val()))) + ‘

‘; } jQuery(«#result»).html(genspwd); } else { jQuery(«#result»).html(‘

Выберите значения для генерации пароля

‘); } }) })

Код html ( без стилей ):

<input type=»checkbox» value=»0″ id=»chars» class=»innerVars»><span>Строчные латинские буквы</span> <input type=»checkbox» value=»1″ id=»bigChars» class=»innerVars»><span>Заглавные латинские буквы</span> <input type=»checkbox» value=»2″ id=»numChars» class=»innerVars»>Цифры (0-9) <input type=»checkbox» value=»3″ id=»specChars» class=»innerVars»><span>Спец символы (!@#$%^&amp;*()_-&lt;&gt;,.{};:№?)</span> <input type=»text» id=»countsymb»><span>Количество символов</span> <input type=»text» id=»countpwd»><span>Количество паролей</span> <input type=»button» id=»generate» value=»Сгенерировать»> Хочешь стать экспертом в SEO? Пройди курсы от SEO Интеллект Понравилось? Репост!

Интернет во многом схож с тёмным омутом. Дна абсолютно не видно, что скрывается под поверхностью тоже не ясно. Но нет ничего страшного в том, чтобы попробовать разбавить привычное плавание и запустить руки в новое и неизведанное. Что вы вытащите — морского дьявола или затонувший клад — покажет время.

Из этой статьи вы узнаете о четырёх веб-сервисах, наугад отправляющих вас в неизведанные уголки Интернета.

Веб-сайт

Сеть полна чёрных и светлых закоулков. Куда вас закинет RamdomWebSite? Тяжело предположить. Веб-сервис генерирует случайную ссылку на веб-страницу абсолютно любой тематики и предназначения.

Интересно, какое лицо будет у вас после открытия случайной ссылки

Авторы сервиса стараются исключать из выдачи страницы с порнографическим содержанием, хотя и не гарантируют 100% защиты от подобных ресурсов.

Wikipedia

О «Википедии» слышал даже самый прожжённый двоечник, которому знания в принципе ни к чему. Что уж говорить о людях, желающих получить новую информацию. Google отдаёт дань уважения «Википедии», выводя ссылки на её страницы в отдельном блоке выдачи поискового запроса. Количество статей, размещённых в интернет-библиотеке, тяжело сосчитать, а тем более прочесть. Но это вовсе не говорит о том, что вы не должны постепенно расширять свой кругозор.

Wiki знает всё

Внимательные читатели знают, что в левой боковой панели «Википедии» расположена специальная ссылка на случайную статью. За рандомный перевод на новую страницу также отвечает комбинация клавиш Alt + Shift + X.

Случайная статья

«Просмотр улиц»

В недрах компании Google родилось немало замечательных проектов, среди которых трудно пройти мимо «Просмотра улиц». Это действительно уникальный сервис, позволяющий приземлиться и пройтись по множеству неизведанных дорог в самых неожиданных точках земли.

Не забудьте о гидрокостюме, возможно, вам предстоит заплыв

Как вы уже догадались, веб-сайт MapCrunch отправляет вас в случайное географическое место. Напомню, что «Просмотр улиц» затрагивает и глубины океанов.

YouTube

Конечно, крупнейший генератор интернет-трафика не мог остаться в стороне. Сервис RandomYouTube отодвигает в сторону рекомендованные вам и популярные у других людей видео.

Вам могут попасться и игрушки-стрелялки

База сервиса насчитывает более 300 000 роликов. Конечно, это ничтожная цифра на общем фоне YouTube-контента, но и за жизнь вряд ли пересмотришь.

В свое время мы использовали случайную выборку записей для формирования списка вопросов теста. Мы делали это на клиенте, используя функции базового языка, генерирующие псевдослучайное число в заданном диапазоне (например, функция RND в Visual Basic).

Однако оказалось, что достаточно просто это можно организовать и на сервере. Причем сделать это можно как аналогичными средствами (с помощью функции RAND в T-SQL) так и на основе типа данных uniqueidentifier, который называется глобальным уникальным идентификатором и имеет вид:

  1. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,

где каждое x является шестнадцатеричной цифрой в диапазоне 0–9 или a–f. Например, EEA8BF3A-7633-477A-B8C1-8C60DC9AD20C.

Для решения нашей задачи важно то, что этот уникальный идентификатор может генерироваться автоматически при использовании функции NEWID. Просто напишите в QA (Query Analyzer) или в MS (Management Studio)

Консоль Выполнить

  1. SELECT NEWID();

или на сайте Консоль Выполнить

  1. SELECT TOP 1 NEWID() FROM PC;

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

Так вот, идея состоит в том, чтобы в запрос, возвращающий нужное число записей, добавить вычисляемый столбец NEWID, по которому должна выполняться сортировка. Поскольку генерируемые значения произвольны, то мы и получим случайную выборку.

Итак, пусть нам нужно выбрать две произвольные модели из таблицы Product:

Решение 8.8.1

Консоль Выполнить

  1. SELECT model
  2. FROM (SELECT TOP 2 model, NEWID()
  3. FROM Product
  4. ORDER BY
  5. ) x;

Или более просто

Решение 8.8.2

Консоль Выполнить

  1. SELECT TOP 2 model
  2. FROM Product
  3. ORDER BY NEWID();

Выполним этот запрос несколько раз: