Pull to refresh
0
0
Dmitry Vorobyev @VoDmAl

User

Send message
Мы тоже когда-то считали, что проблема паролей, которые легко подобрать,— проблема пользователей. Пока количество пользователей не превысило несколько миллионов и злоумышленники-спамеры элементарной проверкой по спам-базе и паролю 123456 не заполучили доступ к пусть сильно меньше чем 1% аккаунтов, не все-таки к внушительному количеству в абсолютных числах.

Правда регистрироваться мы позволяем с 5 и больше любых символов, но вот при аутентификации с таким паролем заставляем его поменять с подтверждением по email. Таким образом и регистрация не теряется из-за простого пароля, и пользователь если решит зайти во второй раз именно по паролю вынужден будет его сменить.
Да, но Нет. :) Я написал почему, теперь объясню на примере.

Допустим, у меня есть аккаунт на сайтах habrahabr.ru, lepra.ru, dirty.ru и т.д. и все они высылают пароль на мыло при регистрации. Злоумышленник получает доступ к моей почте и скачивает все письма (я их не удаляю), теперь мне нужно на всех сайтах менять пароли, потому что он в ЛЮБОЙ МОМЕНТ ВРЕМЕНИ может ими воспользоваться. Даже уже тогда, когда я верну себе ящик. Представляете головную боль?

В предлагаемом подходе для получения доступа нужно ВЛАДЕТЬ МЫЛОМ СЕЙЧАС. Восстанавливать пароль на каждом сайте к которому он хочет получить доступ. Заходить на сайт, менять пароль. Это сильно сложнее и подозреваю, может быть использовано только для получения доступа к определенным сайтам.

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

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

Делать проверку на простоту пароля при регистрации можно, если вы хотите потерять несколько процентов пользователей, которые из-за этого так и не зарегистрируются.

Мы делаем так. Разрешаем регистрироваться с любым паролем (не менее 6 символов), на мыло уходит только ссылка для активации, которая после первого нажатия перестает выполнять эту функцию. При нажатии на ссылку пользователя так же логинит на сайт. А вот если он через какое-то время пытается зайти со своим простым паролем вот тогда мы ему это делать уже не даём, заставляя поменять пароль на нормальный.
Было интересно посмотреть на их ботов в лицо, так сказать, поэтому зарегистрировался и несколько раз за день заходил и в соц. сеть и на их сайт. Сегодня в статистике увидел, что я провел в соц. сети 53 минуты 13 секунд!!! Поразительная точность, — скажете вы, — да ничего подобного!

Я просто заходил, смотрел список посетителей и уходил. Понятно, что статус «онлайн» реализован с задержкой, возможно, довольно приличной. Но зачем тогда типа такая точность? Это же глупо!

В общем я бы поостерёгся использовать этот сервис (может быть только пока) в каких-бы то ни было целях кроме развлекательных. И тем более делать какие-либо выводы из цифр.
Нет, что хотел, то и сказал. А в кавычках я вас процитировал. :)

В базах все правильно: select null = null; даст null, а не false, как C#.

Мое изначальное утверждение было таковым: мне известно очень мало языков не считая sql и его диалектов в которых null себя ведет так, как написал deadem.
В C# оно нужно не для этого. Проблема в том, что: «сравнение с ним вседа дает false», а должно давать null!
Вот демонстрация того, что в C# null равен null:

Console.Write(new Nullable () == new Nullable () ? "habraoops" : "null != null");

На экран будет выведено: habraoops
Как-то категорично написал по «верно только для СУБД»....
На самом деле для тех языков с которыми я сталкивался. Про VB не знал, проверил. Действительно null в нем стоит особняком! Спасибо :)
Утверждение верно только для СУБД, да и то не всегда. Например, в MS SQL есть опция ansi_null, позволяющая управлять этим поведением (убито несколько часов на дебаг когда-то...).

Не в мире баз данных я такого пока не встречал. Было бы интересно поулчить ссылки на соответствующие разделы в документации тех языков, где это есть.
А мне во сне приснислось, что часы переводят на летнее время. Проснулся, и правда переводят :)
Я проверил. Действительно, так и есть, "mirtesen" заменяетя на "SPAM DETECTED, IP LOGGED". Причем во вполне безобидном личном сообщении - я просто вставил его в середину.
Забавно то, что "MirTesen" уже не заменяется. Но я почему-то не удивлен. ;)
Да, у меня тоже в интранете такая связка тоже отлично справлялась с нагрузкой, правда значительно меньшей. Может быть в этом и было дело.
Одно отличие точно в том, что связка IIS + PHP + FastCGI будет работать, в то время как связка IIS + PHP + ISAPI не работала. У меня в одном из проектов IIS не выдерживал и 5 минут при том что количество запросов не превышало 1-2 в секунду. :) По крайней мере я очень в это верю!

Information

Rating
Does not participate
Date of birth
Registered
Activity