Как зайти в интернет без авторизации
Вас не покидает чувство страха и брезгливости при авторизации на любимых сайтах через общедоступные компьютеры? Но как тогда послушать музыку, поделиться с друзьями мыслями и фотками, воспользоваться почтой или совершить видео-звонок, где бы вы ни находились? Выход существует. Необходимо воспользоваться альтернативными сервисами, не требующими регистрации и авторизации. В этом материале мы познакомим вас с полезными онлайн-инструментами, покрывающими большинство потребностей обычного интернет-пользователя без обязательного ввода логинов и паролей.
Передача текста или кода
Сайт в основном используется программистами для хранения части кода или вспомогательной технической информации. Конечно, вы можете обмениваться любыми другими большими объемами текста, которые будут доступны по специальной ссылке в течение определенного периода времени.
Прослушивание музыки
Большинство сервисов потокового прослушивания музыки требуют предварительной авторизации. Но не Grooveshark. Онлайн-библиотека музыки содержит большую базу треков, доступных для быстрого поиска и легкого проигрывания. Навигация по музыкальным жанрам и исполнителям позволяет сориентироваться среди предоставленного изобилия.
Заключение
Наверное, рассмотренная десятка покрывает абсолютное большинство потребностей рядового интернет-жителя. Каждый из предложенных сервисов имеет свои альтернативы. Если вы знаете о таковых, поделитесь ими в комментариях.
Одна из часто встающих задач при разработке web-проектов — пустить пользователя на сайт без ввода логина и пароля, при этом авторизовав его.
- уникальным;
- URL-безопасным;
- сложно (невозможно) подделываемым;
- разумной длины.
Очень часто такое решение приходит первым. На самом деле его место в самом конце.
Предлагаю Вашему решение, которые позволяет обойтись «малой кровью» — не требуют работы с БД.
Что делать?
Кроме приведённых выше свойств ключа, на него часто накладываются и другие ограничения. От них, собственно, и приходится плясать.
В самых простых случаях можно обойтись конструкциями вида: sha1($userId. «secret_key»); или sha1($userId. «secret_key». «confirm_code»);
- для каждого пользователя ключ будет всегда одинаковый;
- такой ключ всегда будет валидным, его нельзя ограничить по времени;
- нужно передавать явным образом id пользователя в URL.
Идея проста. В строку мы помещаем необходимые данные, шифруем её своим секретным ключом, приводим к URL-безопасному виду и вставляем в качестве ключа в ссылку, по которой к нам придёт пользователь.
Нужно помнить о том, что чем больше данных мы захотим поместить в ключ, тем длиннее будет сам ключ, т.к. это уже не хеш фиксированной длины.
- id пользователя (4 байта);
- время создания ключа (4 байта);
- время действия ключа (4 байта);
- режим (1 байт) — переменная при помощи которой мы можем разделить назначение ключей (восстановление пароля/подтверждение регистрации/просто приглашение);
- Случайное число (1 байт) — добавляем уникальности;
- Контрольная сумма (4 байта).
Перейдём к реализации. Я реализовал данное решение в одном классе с двумя статическими методами.
Copy Source | Copy HTML<br/> <?php <br/> <br/> class AuthToken private static $key = "секретный ключ" ;<br/> private static $iv = "должен быть каждый раз случайным, но для данного решения подойдёт просто секретный" ;<br/> <br/> private static function int2char( $int ) $char = "" ;<br/> $hex = sprintf( "%08x" , $int );<br/> for ( $i = 0 ; $i < 4 ; $i ++) $char .= chr(hexdec(substr( $hex , $i * 2 , 2 )));<br/> ><br/> return $char ;<br/> ><br/> <br/> private static function char2int( $char ) $int = 0 ;<br/> $hex = "" ;<br/> for ( $i = 0 ; $i < 4 ; $i ++) $hex .= sprintf( "%02x" , ord( $char < $i >));<br/> ><br/> $int = hexdec( $hex );<br/> return $int ;<br/> ><br/> <br/> public static function create( $id , $expire = 0 , $mode = 0 ) $id = intval( $id );<br/> $expire = intval( $expire );<br/> $mode = intval( $mode );<br/> if ( $id < 0 || $expire < 0 || $mode < 0 ) return null ;<br/> ><br/> <br/> $info = array ();<br/> $info [ "id" ] = $id ;<br/> $info [ "time" ] = time();<br/> $info [ "expire" ] = $expire ;<br/> $info [ "mode" ] = $mode ;<br/> $info [ "rnd" ] = ceil(mt_rand( 0 , 255 ));<br/> $info [ "sum" ] = $info [ "time" ] - $info [ "expire" ] - $info [ "mode" ] - $info [ "rnd" ] - $info [ "id" ];<br/> $info = self::int2char( $info [ "id" ]) . self::int2char( $info [ "time" ]) . self::int2char( $info [ "expire" ]) . chr( $info [ "mode" ]) . chr( $info [ "rnd" ]) . self::int2char( $info [ "sum" ]);<br/> <br/> $token = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(self:: $key ), $info , MCRYPT_MODE_OFB, md5(self:: $iv ));<br/> $tokenHex = "" ;<br/> $tokenLength = strlen( $token );<br/> for ( $i = 0 ; $i < $tokenLength ; $i ++) $tokenHex .= sprintf( "%02x" , ord( $token < $i >));<br/> ><br/> return $tokenHex ;<br/> ><br/> <br/> public static function check( $tokenHex , $mode = null ) $token = "" ;<br/> $tokenHexLength = strlen( $tokenHex ) / 2 ;<br/> for ( $i = 0 ; $i < $tokenHexLength ; $i ++) $token .= chr(hexdec(substr( $tokenHex , $i * 2 , 2 )));<br/> ><br/> $info = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(self:: $key ), $token , MCRYPT_MODE_OFB, md5(self:: $iv ));<br/> if (strlen( $info ) == 18 ) $info = array ( "id" => self::char2int(substr( $info , 0 , 4 )), "time" => self::char2int(substr( $info , 4 , 4 )), "expire" => self::char2int(substr( $info , 8 , 4 )), "mode" => ord( $info < 12 >), "rnd" => ord( $info < 13 >), "sum" => self::char2int(substr( $info , 14 , 4 )));<br/> if ( $info [ "sum" ] == $info [ "time" ] - $info [ "expire" ] - $info [ "mode" ] - $info [ "rnd" ] - $info [ "id" ]) if ( $info [ "expire" ] > 0 ) if ( $info [ "expire" ] + $info [ "time" ] < time()) return false ;<br/> ><br/> ><br/> if ( $info [ "mode" ] > 0 ) if ( $mode !== null ) if ( $info [ "mode" ] != $mode ) return false ;<br/> ><br/> ><br/> ><br/> return $info [ "id" ];<br/> > else return false ;<br/> ><br/> > else return false ;<br/> ><br/> ><br/>><br/> <br/> ?> <br/> <br/>
Ключи self::$key и self::$iv, в целях безопасности, лучше хранить отдельно от алгоритма.
(string) AuthToken::create($id, $expire = 0, $mode = 0)
Создаёт ключ.
(mixed) AuthToken::check($tokenHex, $mode = null)
Проверяет валидность ключа. В случае успешной проверки возвращает ID пользователя, иначе логическое FALSE.
Если не указывать $expire и/или $mode — они не будут учитываться при проверке ключа. Если не указывать $mode при проверке — он так же не будет учитываться.
Если ничего не помогает?
Такое решение не подойдёт если нужен одноразовый ключ. Но это можно решить небольшими костылями. Например установка в memchache флага проверки такого ключа в сочетании с ограниченным временем действия ключа дадут нужный результат в большинстве случаев.
Хранение файлов в облаке
Чем File Dropper лучше широко известных MegaUpload и RapidShare? Прежде всего, отсутствием раздражающих таймеров обратного отсчета перед скачиванием файла. Ссылка не скрыта под огромным количеством рекламных баннеров. File Dropper предлагает простой хостинг файлов для легкого и быстрого использования. Объем разгружаемого файла ограничен весьма впечатляющими 5 Гб. Файлы хранятся до тех пор, пока их загружают хотя бы один раз в течение 30 дней.
Переписка
В поисках приватной комнаты для общения? Смело заходите на ChatStep. Создание защищенного пространства происходит в пару кликов. Все отправляемые данные шифруются в браузере до перекачки по каналам интернета. Никогда шпионам не было так просто чатиться.
Совет, как можно быстро подключиться к незакрытой публичной Wi-Fi-сети.
В зависимости от того, где вы живете, есть множество мест, в которых можно бесплатно подключиться к Wi-Fi, чтобы вы могли работать или учиться удаленно, или избегать ограничения интернет-трафика на вашем смартфоне, установленные сотовым оператором (в случае если ваш мобильный Интернет не безлимитный). К счастью, бесплатный Wi-Fi можно поймать в ресторанах, кафе, вокзалах, аэропортах, магазинах, бизнес-центрах, некоторых торговых комплексах, некоторых парках и т. д. Но есть одна проблема: публичные сети обычно делают процесс подключения довольно раздражающим. Так, например, между вами и беспроводной сетью, как правило, в процессе подключения возникают промежуточные страницы входа, где, прежде чем получить доступ в Интернет, нужно авторизоваться.
Большинство из этих общедоступных сетей Wi-Fi требуют, чтобы пользователи авторизовались с помощью мобильного телефона или электронной почты, соглашаясь с ограничениями использования доступа в Интернет, а также подтверждали свою личность. Часто это утомительный процесс. Но еще хуже, когда эти страницы входа в систему не отображаются автоматически. В итоге, подключившись к какой-нибудь сети, вы не сможете выйти в Интернет, пока не авторизуетесь. Но как быть, если автоматически не появляется форма/страница авторизации публичной Сети?
К счастью, у вас есть несколько хитростей, чтобы принудительно запустить этот процесс, если страницы входа не будут загружаться на вашем устройстве, подключившемся к публичной открытой сети.
Перезагрузите ваше устройство или сбросьте настройки Wi-Fi
Первое и самое простое – это перезагрузить ваше устройство. Если вы не хотите делать полный перезапуск, вам может помочь простое включение и выключение Wi-Fi на вашем устройстве. После того как вы полностью перезапустили смартфон или планшет (или включили и выключили Wi-Fi), попробуйте снова подключиться к беспроводной сети и открыть какой-нибудь веб-сайт, чтобы начать процесс входа в систему.
Если ни один из вышеперечисленных способов не работает, выполните следующие действия в своем устройстве и повторите попытку:
Авторизация без авторизации: не собираем персональные данные
В этой статье хотим поделиться нашим опытом реализации системы авторизации пользователя на различных платформах. Это уникальное решение позволило нам не собирать и не хранить персональные данные пользователей. Совсем.
Предыстория
На первом этапе нашей командой было решено, что приложение будет иметь классическую систему авторизации/регистрации: Email или телефон, дабы пользователь мог оформить и оплатить подписку с одного устройства и активировать доступ на всех девайсах.
Выбрали формат, начали писать документацию, но в какой-то момент встал вопрос: как объединить данные подписок в App Store и Google Play, чтобы была возможность синхронизировать их на обеих платформах? Причем сделать это так, чтобы установить общих срок подписки, да к тому же на выходе система не противоречила нашему позиционированию “не собирать данные о пользователе”.
Поэтому мы начали разрабатывать систему, которая соответствовала бы следующим пунктам:
- не собирала и не хранила персональные данные юзеров
- позволила реализовать идею auto-renewable subscription на мультиплатформенной основе
Авторизация
В чем секрет такого решения?
Пользователю нужно установить приложение на свой смартфон, безопасно и быстро оплатить подписку, и с помощью QR-кода в одно действие авторизовать ее на другом устройстве. Без учетных данных, логина и повторной покупки доступа.
Как это работает у пользователя
- После загрузки программы на десктопе появится экран авторизации, в котором отображается QR-код.
- Загружаешь и запускаешь мобильное приложение из App Store/Google Play с in-app подпиской
- Сканируешь или вводишь код авторизации в мобильном приложении
- После успешной авторизации ждешь загрузки экрана управления соединением
- Выбрать страну для подключения и нажимаешь «Подключить»
- После получения разрешений произойдет VPN-соединения будет установлено
Как это работает в действительности
- При первичной авторизации десктопное приложение запрашивает временный токен;
- В базе автоматически генерируется временный токен и отдаётся декстопному приложению. Для максимальной безопасности данных время жизни нашего токена — 15 минут;
- Десктопное приложение выводит на главный экран QR-код и токен в открытом виде для мобильного приложения;
- Мобильное приложение сканирует QR-код и распознает введенный вручную пользователем код и отправляет его в API-запрос на генерацию подтверждения устройства юзера;
- Десктопное приложение запрашивает разрешение у сервера юзера, к которому привязан токен, если привязка существует — API без проблем отдает id и токен для авторизации.
Как это работает в магазине мобильных приложений. Например, в App Store
На самом процессе внедрения in-app покупок подробно останавливаться не будем, на Хабре о ней уже много писали.
На первом этапе происходит проверка квитанции и статуса подписки на сервере, проверяются параметры запроса. При успешной проверке в приложение возвращается статус подписки и токен сессии.
Видео-звонки
Бесплатная видео-конференция из восьми человек? Да, это возможно. Достаточно создать комнату для общения, поделиться ссылкой со своими друзьями, и начать общаться онлайн. Appear.in объединяет людей из разнообразных социальных сетей в одном месте. Видео-общение доступно для Chrome, Firefox, Opera. Данные защищены и не сохраняются на серверах сервиса.
Обмен видео
Легкий, быстрый, анонимный шаринг видео в сети доступен не только через веб-интерфейс, но и мобильные приложения для iOS и Android. Более близко познакомиться с сервисом вы можете в детальном обзоре Лайфхакера.
Использование электронной почты
Обмен изображениями
Фото-хостинг позволяет расшарить картинки четырьмя удобными способами: загрузкой с жесткого диска, перетаскиванием мышью, указанием веб-ссылки, а также вставкой из буфера обмена. Вы можете делиться не только отдельными снимками, но и целыми альбомами. Сервис полностью бесплатен.
Как найти страницу входа на общедоступном Wi-Fi: лайфхак
Укорачивание ссылок
Мы привыкли делиться интересными ссылками со своими друзьями в социальных сетях или с коллегами по электронной почте. Если в Facebook длиннющая ссылка выглядит просто нелепо, то в Twitter она может попросту не уместиться. На выручку приходят сервисы сжатия длины ссылок. Почему is.gd? Он легок и прост. Ко всему прочему, вы можете поместить специальный скрипт на панель закладок и в один клик сокращать ссылку текущей страницы браузера.
Конвертирование файлов
Может ли один сервис поддерживать более тысячи различных преобразований файлов? Да, имя этого онлайн-монстра — Zamzar. С 2006 года онлайн-инструмент предоставляет услуги простого конвертирования файлов. Достаточно выбрать несколько файлов объемом до 100 Мб, указать формат на выходе, и Zamzar отправит ссылку на скачивание на указанный вами адрес электронной почты.
Читайте также: