• Как устроена авторизация по паролю в web-приложениях?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    Спасибо.
    И ответ, и дискуссия много прояснили!
  • Как устроена авторизация по паролю в web-приложениях?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    Спасибо.
    Ваш ответ добавлю в общую копилку мыслей по поводу авторизации.
  • Как устроена авторизация по паролю в web-приложениях?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    Vasiliy_M,
    При аутентификации поставте куку с логином и хэшом пароля, при авторизации - проверьте их.

    а, кстати, да! зачем то генерировать некое искуственное ID для идентификации авторизованного клиента, если есть уже вполне естественный ID - хэш.
    И код сервера в этом случае проще....без понятия сессии и особой логики для нее.
    Отлично. У меня в голове что-то определенно сложилось!
  • Как устроена авторизация по паролю в web-приложениях?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    triggerfinger,
    да 90% используют одну и ту же соль, 10, 11. Итого что, в 2 раза больше одинаковых хешей надо сравнить?


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

    В целом-то ведь никакой проблемы нету выдать каждой учетной записи по guid`у и солить этим guid`ом.
  • Как устроена авторизация по паролю в web-приложениях?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    Сессию в вопросе я первый упомянул.
    Расскажите для чего сессия применяется (для полноты картины).
    и как можно реализовать без сессий авторизацию?
  • Как устроена авторизация по паролю в web-приложениях?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    Мне тут рассказали, что есть фирмы, которые получают соль на основе аппаратных датчиков случайных чисел, которые работают в каких-то там слоях атмосферы, ловя тепловые шумы и шумы космических излучений =) вот где параноя!

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

    Чтобы если у злоумышленника есть цель скомпроментировать всю базу паролей, то мы должны максимально усложнить ему задачу (до экономической нецелесообразности).

    То есть если у двух пользователей получился одинаковый пароль, и если соль для этих пользователей была одинаковая и алгоритм хэша один, то и хэш будет одинаковый. Значит "подобрав" пароль по хэшу для одного - мы сразу получаем пароль другого.

    То есть лучше соль иметь персональную.
    Так тут похоже разобрался. =)

    P.S. Пока это учебный проект, понятно что все это неактуально. Но хочется чтобы решение было масштабируемым в итоге. Ну и разобраться как все работает, чтоб потом осознанные решения принимать: кого, чего, куда солить...
  • Как устроена авторизация по паролю в web-приложениях?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    Спасибо за подробный ответ.
    Пара уточнений:
    1. А есть ли схема ...или правильнее протокол, при котором логин/пароль не передаются в открытую? Я понимаю, https и никто не подсмотрит, что там передается....но, к примеру, клиент профукал все предупреждения или как-либо обошел все запреты и ему подсунули фишинговую страничку с сертификатом незаверенным нашим или широкоизвестным центром сертификации...

    2. Что значит подписать куки? Я вот разбирался с openssl: там есть ключ и сертификат сертификационного центра....есть незаверенный сертификат.....есть определенная команда openssl...которая выдает подписанный сертификат (я про случай собственного центра самозаверенного центра сертификации для примера). А с куками как? Куки - это ведь набор заголовков с парами строковых ключ/значение. В подписанном виде это будет видимо что-то зашифрованное приватным ключом сервера, которое можно расшифровать с помощью публичного сертификата сервера? или как? а как браузер это расшифровывает? сам как-то, т.е. API для этого есть? или javascripto`ом? сторонние библиотеки?
  • Как проверить плату на работосппособность?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Или наоборот лежать и ничего не делать =)
  • Как проверить плату на работосппособность?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    А с какой целью её нужно включать, если не знаешь хотя бы приблизительно, что это за плата? Just for fun?
  • Как настроить поведение редактора?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    вот надо попробовать очень быстро явно набрать: открывающую скобку, закрывающую скобку и стрелку назад

    хотя наверное понял в чем проблема.....наверное я не успеваю отжать shift
    но ведь в VS2010 такого не было....я явно заметил проблему при переходе от версии к версии
  • Как настроить поведение редактора?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    так дело то в мышечных привычках......когда печатаю на дикой скорости, то мимо головы эти скобки сами пишутся.....а на медленной скорости проблема не проявляется.....хоть в нормальных IDE, хоть в ненормальных...
  • Как настроить поведение редактора?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov Автор вопроса
    хм....не соглашусь
    Ситуации всякие бывают. Иногда и в блокноте без всякой автоматизации приходится вбивать что-нибудь. Хотя, конечно, редко...
    Но в данном пальцы сами набирают эту закрывающую скобку. Голова тут не поспевает.

    А вопрос обновления версии студии - экономический и юридический.
    Так можно сказать: да че ты вообще паришься - найми индуса и не мучайся...
  • Как из стоки windows-1251 получить строку UTF-8 на C#?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    как вариант можно попробовать сериализовать в json с помощью специально для этого реализованными инструментами, например: newtonsoft json.

    еще у WebClient`а есть свойство Encoding. Можно попробовать разные варианты.
  • Математика внеземных цивилизаций?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Мы тут из пальца высасываем инопланетную математику. Я думаю нету смысла заботиться о том, фальсифицируема ли у нас получилась конструкция или не очень. А поэтому ничего страшного, если дедушка Платон пару оборотов в гробу еще совершит :-|
  • Как проверить наличие процесса c#?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    eRKa, или так =):
    public bool isHaveProcess(string pName)
    {
        return Process.GetProcesses().Any(process=>process.ProcessName == pName);
    }
  • C# GDI+ нарисовать график в 30 000 точек?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    не решал такую задачу
    но есть пара размышлений:
    • В любом случае надо фильтровать исходные данные
    • На крупных масштабах (когда мелких деталей не видно) мы должны отсечь одиночные выбросы и провалы, а так же игнорировать высокочастотную составляющую: только крупные изменения должны быть видны. Это похоже на применение оконного медианного и оконного среднего фильтров (в окне отбрасываем несколько минимальных и максимальных замеров, а по остальным усредняем). После их применения график будет более гладкий и его можно будет рисовать как я выше написал.
    • Параметры фильтров должны зависеть от масштаба. Т.е. размер окна и сколько максимальных и минимальных замеров выбрасывать должно зависеть от масштаба. Так на мелких масштабах (когда должны быть видны самые мелкие детали) размер окна должен уменьшится до единицы (до есть никакой фильтрации по сути не должно быть).
  • Запуск массива байт не работает?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Если вам нужно запустить произвольный exe-шник, то, вероятно, нужно использовать System.Diagnostics.Process.Start для запуска его в отдельном процессе.

    Если запускающая программа должна еще и взаимодействовать с запускаемым процессом, то это отдельная большая тема: inter process communication (IPC).
  • Запуск массива байт не работает?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    из msdn: Класс Assembly представляет сборку, которая является модулем с возможностью многократного использования, поддержкой версий и встроенным механизмом описания общеязыковой исполняющей среды.

    Я так понимаю, "встроенный механизм описания общеязыковой исполняющей среды" - это как раз про .NET Framework.
  • Вопрос по LINQ, как лучше всего получать единственный элемент из выборки?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Согласен с Петр.ом
    Отмечу один момент. Вы часто в вашем вопрос проверяете не пусто ли перечисление с помощью
    if (lst.Count() > 0)
    {
    ...
    }

    в этом случае LINQ реально подсчитывает количество элементов, т.е. пробегает по всем элементам перечисления, хотя достаточно узнать: есть ли в перечисление хотя бы один:
    if (lst.Any())
    {
    ...
    }

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