Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 6

Рекомендованные сообщения

Гость Camus

хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список?

 

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

Гыы

Поделиться сообщением


Ссылка на сообщение

хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список?

 

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

Гыы

 

Проект = проект в VS

Клиент = то, что поглащает сервис, судя по этому солюшену, это веб апп

 

Где ты тут всмотрел что это используется в продукции?

Поделиться сообщением


Ссылка на сообщение
Гость Camus

Ждем, когда окажется что комментарии оказывается писать не запрещено, а даже поощряется.

Поделиться сообщением


Ссылка на сообщение
(изменено)

Ждем, когда окажется что комментарии оказывается писать не запрещено, а даже поощряется.

 

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

 

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

 

В действительности, на данный момент поддержку этого алгоритма гугл и майкрософт будут останавливать в ближайшие два года, но это потому что ТЕОРЕТИЧЕСКИ, для этого алгоритма можно найти коллизии. Иными словами, использовать SHA1 для SSL сертификатов - это рискованно, так как в будущем есть вероятность что с ростом компьютерной мощности (согласно Moor's law), эти коллизии можно будет найти. Было много научных исследований на эту тему, некоторые группам удалось найти колизии в неполной версии алгоритма и это якобы важный шаг к тому, чтобы сломать главный алогоритм.

 

Однако: https://en.wikipedia.org/wiki/SHA-1

As of October 2015 , no actual collisions are publicly known.

 

Ну это про колизии. То что тут было упомянуто про слитие базы, это preimage attack, это совершенно другой вид атаки. Понятия "preimage resistance" и "collision resistance" это две разные вещи.

 

Если тебя интересует преимадж резистанс SHA1 (а именно возможность найти X, если M = hash(x, salt) при знании M), то можешь посмотреть вот это видео: http://research.microsoft.com/apps/video/default.aspx?id=153985&r=1

 

We show that preimages of SHA-1 can be computed at the cost of 2159.3 compression function computations.

 

 

 

Ну хотя для твоего простецкого глаза 2^159 выглядит как небольшая цифра, но не поддавайся на такое. 2^159 = 730750818665451459101842416358141509827966271488

 

ах да, забыл добавить. SHA1 это дефолтный алгоритм используемый ASP.NET Membership Framework на которой сейчас живут милионы ecommerce веб сайтов. Если у тебя есть магическая палочка которая может крякнуть SHA1, то ты чувак на жопе ровно зря сидишь, ты можешь идти милиарды на этом зарабатывать.


Изменено пользователем Supernatura1

Поделиться сообщением


Ссылка на сообщение

ах да, забыл добавить. SHA1 это дефолтный алгоритм используемый ASP.NET Membership Framework на которой сейчас живут милионы ecommerce веб сайтов. Если у тебя есть магическая палочка которая может крякнуть SHA1, то ты чувак на жопе ровно зря сидишь, ты можешь идти милиарды на этом зарабатывать.

который в некст году забанят с сертификатов

Поделиться сообщением


Ссылка на сообщение
(изменено)

а что за язык на 302й?


Изменено пользователем Reality

Поделиться сообщением


Ссылка на сообщение

ах да, забыл добавить. SHA1 это дефолтный алгоритм используемый ASP.NET Membership Framework на которой сейчас живут милионы ecommerce веб сайтов. Если у тебя есть магическая палочка которая может крякнуть SHA1, то ты чувак на жопе ровно зря сидишь, ты можешь идти милиарды на этом зарабатывать.

который в некст году забанят с сертификатов

 

Каким образом сертификаты связаны с паролями в базе данных?

Поделиться сообщением


Ссылка на сообщение
Гость Camus

Гыы, называет кого-то религиозным фанатиком, а сам при этом фанатично отказывается писать комментарии, гыы.

 

Использовать устаревшую хеш функцию, когда есть bcrypt, и оправдывать это, это конечно эпик. Тем более странно звучат слова, что ты этот курс изучал, но видимо комментарии себе в тетрадку не записывал.

Поделиться сообщением


Ссылка на сообщение

ах да, забыл добавить. SHA1 это дефолтный алгоритм используемый ASP.NET Membership Framework на которой сейчас живут милионы ecommerce веб сайтов. Если у тебя есть магическая палочка которая может крякнуть SHA1, то ты чувак на жопе ровно зря сидишь, ты можешь идти милиарды на этом зарабатывать.

который в некст году забанят с сертификатов

 

Каким образом сертификаты связаны с паролями в базе данных?

считаешь что хеши небезопасные для подписки сертификатов абсолютно безопасны для хранения паролей?

они же юзаются абсолютно одинаково

Поделиться сообщением


Ссылка на сообщение

ах да, забыл добавить. SHA1 это дефолтный алгоритм используемый ASP.NET Membership Framework на которой сейчас живут милионы ecommerce веб сайтов. Если у тебя есть магическая палочка которая может крякнуть SHA1, то ты чувак на жопе ровно зря сидишь, ты можешь идти милиарды на этом зарабатывать.

который в некст году забанят с сертификатов

 

Каким образом сертификаты связаны с паролями в базе данных?

считаешь что хеши небезопасные для подписки сертификатов абсолютно безопасны для хранения паролей?

они же юзаются абсолютно одинаково

 

Smotria chto ti ponimaesh pod 'odinakogo'. Eshe raz perechitai moi post predidushij. Ja sha ne doma i ne mogu na russkom pechatat, tak chto potom otvechu kak domoi pridu. So vtorim klounom sporit bespoke no, on prochital chtoto na zabore i povtorjaet kak istinu

Поделиться сообщением


Ссылка на сообщение
Гость Camus

Гыы, не умеет в слепую печать, гыы

Поделиться сообщением


Ссылка на сообщение

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


Лишь ощутив баттхерт до конца, мы обретаем свободу

bf4ffc239860.png

Поделиться сообщением


Ссылка на сообщение

ах да, забыл добавить. SHA1 это дефолтный алгоритм используемый ASP.NET Membership Framework на которой сейчас живут милионы ecommerce веб сайтов. Если у тебя есть магическая палочка которая может крякнуть SHA1, то ты чувак на жопе ровно зря сидишь, ты можешь идти милиарды на этом зарабатывать.

который в некст году забанят с сертификатов

 

Каким образом сертификаты связаны с паролями в базе данных?

считаешь что хеши небезопасные для подписки сертификатов абсолютно безопасны для хранения паролей?

они же юзаются абсолютно одинаково

 

Абсолютно безопасны, если соблюдать адекватные рестрикции на сами пароли (9+ символов содержащие буквы и цифры)

 

SHA1 небезопасен лишь тем, что в можно ТЕОРЕТИЧЕСКИ найти колизии (опять же это все пока что звон в научных местах без реальных доказательств. Википедия ясно говорит, что колизий в полной версии алгоритма пока что не найдено)

 

Колизия это когда 2 РАЗНЫХ строки приводят к одному и тому же хешированному результату. То есть имея строки m1 и m2, hash(m1) = hash(m2).

 

Теперь давай разберемся как это влияет на SSL сертификаты. Злодей имеет два документа, 'А' и 'Б'. Он хочет наебать Петю таким образом, чтобы он принял документ 'Б' от Васи. Что происходит далее:

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

- Злодей прикрепляет полученную подпись к документу 'Б'.

- Злодей шлет подпись вместе с документом 'Б' Пете, заявляя, что мол этот документ был подписан Васей. Так как электронная подпись подходит к хэшу из документа 'Б', то Петя никак не может уличить подмену и принимает документ (а именно SSL сертификат!)

 

 

Ситуация с паролями совершенно другая. Допустим случилось так и твою базу слили, и злодей заполучил хеши и соли всех юзеров. Здесь найденная колизия никак не поможет, ибо допустим мы имеем пользователя со следующими данными:

 

username: supernatural

pass: 9EGbR5o95M4F4ScJYtyYYQRhDRQ= (в реальности давайте скажем что пароль это qwerty123)

salt: 3ZPGINWK8WPHF6PAWLYCSTOOA2439OJN

 

Опять же ТЕОРЕТИЧЕСКИ (опять же скажу, этого пока что не удалось сделать для полного SHA1) давай скажем что мы нашли колизию и строка "978978978" с солью "3ZPGINWK8WPHF6PAWLYCSTOOA2439OJN" возвращает хеш "9EGbR5o95M4F4ScJYtyYYQRhDRQ="

 

Итак, что мы от этого поимели? Пароля supernatural мы все равно не знаем. Мы можем сгенерировать такой же хеш, как у этого юзера, но можем ли мы залогиниться как supernatural? Опять же нет, ибо проверяется не только пароль, но и username. Дак вот мой вопрос к тебе, что ты имеешь от того, что ты нашел эту мифическую колизию и смог сгенерировать такой же пароль какой есть у какого то юзера?

 

На самом деле, то, что ты хочешь найти это преимедж, а именно тебе нужно произвести преимадж атаку на слитую базу. Это типичная брут форс атака, а именно тебе нужно будет генерировать хаши на каждую соль и пытаться "угадать" пароль qwerty123. Как только ты найдешь строку которая приведет к результату - 9EGbR5o95M4F4ScJYtyYYQRhDRQ=, то ты знаешь, что ты попал в цель.

 

Однако любой пароль состоящий из 9+ знаков (буквы и цифры) таким образом сломать невозможно.

Поделиться сообщением


Ссылка на сообщение

Мы можем сгенерировать такой же хеш, как у этого юзера, но можем ли мы залогиниться как supernatural? Опять же нет, ибо проверяется не только пароль, но и username.

шо?


Лишь ощутив баттхерт до конца, мы обретаем свободу

bf4ffc239860.png

Поделиться сообщением


Ссылка на сообщение
Гость Camus
Однако любой пароль состоящий из 9+ знаков (буквы и цифры) таким образом сломать невозможно.
Из-за коллизий возможно. SHA, md5 и многие другие хеши создавались специально, чтобы быстро подсчитывать хеши больших объемов данных, это одно из условий хорошего хеша. И уже поэтому их не стоит использовать для хеша пароля, ибо дает возможность для брут атаки. На видеокартах sha-1 считается очень хорошо. Но то что у этого алгоритма возможны коллизии делает его окончательно непригодным для серьезных вещей. Это как минимум говорит о его качестве. От того более странно, что ты пытаешься защищать код который писал не ты.

Поделиться сообщением


Ссылка на сообщение
(изменено)
Однако любой пароль состоящий из 9+ знаков (буквы и цифры) таким образом сломать невозможно.
Из-за коллизий возможно. SHA, md5 и многие другие хеши создавались специально, чтобы быстро подсчитывать хеши больших объемов данных, это одно из условий хорошего хеша. И уже поэтому их не стоит использовать для хеша пароля, ибо дает возможность для брут атаки. На видеокартах sha-1 считается очень хорошо. Но то что у этого алгоритма возможны коллизии делает его окончательно непригодным для серьезных вещей. Это как минимум говорит о его качестве. От того более странно, что ты пытаешься защищать код который писал не ты.

 

Ja takih glupih ludei davno ne vstrechal. Ne chitaet voobshe chto ja pishu, a prosto sret i sret.

 

Horosho chuvak, ti prav. Ti menia zaovnil


Изменено пользователем Supernatura1

Поделиться сообщением


Ссылка на сообщение

то чувство когда уехал жить в калифорнию, но не закончил войну в интернете

ReAIver's и Supernatura1 понравилось это

have courage and be kind

  😈🫀💋 🩸👣🤌🏿🦄 🐝 ☄️❣️ 💕 💞❤️😈

 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖

220941652_Annotation2021-03-20123345.jpg.23dcff343d6a377badf433b20f5271fd.jpg

💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 

Поделиться сообщением


Ссылка на сообщение
Гость Camus

Гыы, называть кого-то в интернете тупым

Поделиться сообщением


Ссылка на сообщение

Гыыы

в каждом посте

Cantona.Eric понравилось это

Поделиться сообщением


Ссылка на сообщение

Приведу стену из известной книги:

 

Стена

 

Комментарии легче написать плохо, а не хорошо, и комментирование иногда

бывает скорее вредным, чем полезным. Жаркие дискуссии по поводу достоинств

комментирования часто напоминают философские дебаты о моральных достоинствах,

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

ним и его учениками могла бы произойти следующая беседа.

Комменто

Действующие лица:

ФРАСИМАХ

Неопытный пурист теории, который верит всему, что читает.

КАЛЛИКЛ

Закаленный в боях представитель старой школы — «настоящий»

программист.

ГЛАВКОН

Молодой, самоуверенный, энергичный программист.

ИСМЕНА

Опытная разработчица, уставшая от громких обещаний и просто

желающая найти несколько работающих методик.

СОКРАТ

Мудрый опытный программист.

Мизансцена:

Завершение ежедневного собрания группы

— Желает ли кто#то обсудить еще что-нибудь, прежде чем мы вернемся к работе?

— спрашивает Сократ.

— Я хочу предложить стандарт комментирования для наших проектов, — говорит

Фрасимах.

— Некоторые наши программисты почти не комментируют свой

код, а всем известно, что код без комментариев нечитаем.

— Ты, должно быть, еще менее опытен, чем я думал, — отвечает Калликл. — Ком#

ментарии — это академическая панацея, и любому, кто писал реальные програм#

мы, известно, что комментарии затрудняют чтение кода, а не облегчают. Естествен#

ный язык менее точен, чем Java или Visual Basic, и страдает от избыточности, тог#

да как операторы языков программирования лаконичны и попадают в самое яб#

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

ные комментарии? Кроме того, комментарии устаревают при изменениях кода.

Доверяя устаревшим комментариям, ты сам себе роешь яму.

— Полностью согласен, — вступает в разговор Главкон. — Щедро прокомментиро#

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

того, что я должен читать код, так мне нужно читать еще и кучу комментариев!

— Подождите минутку, — вставляет свои две драхмы Исмена, ставя чашку кофе.

— Конечно, злоупотребление комментариями возможно, но хорошие комментарии

ценятся на вес золота. Мне приходилось сопровождать код как с комментариями,

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

нам нужен стандарт, заставляющий писать один комментарий на каждые x строк

кода, но побудить всех программистов комментировать код не помешает.

— Если комментарии — пустая трата времени, почему все их используют, Калликл?

— спрашивает Сократ.

— Или потому, что таково требование, или потому, что человек прочитал где#то о

пользе комментариев. Ни один программист, когда#либо задумавшийся об этом,

не пришел к выводу, что комментарии полезны.

— Исмена считает, что они полезны. Она уже три года сопровождает твой код без

комментариев и чужой код с комментариями. Ее мнение ты уже слышал. Что ты

скажешь на это?

— Комментарии бесполезны, потому что они просто повторяют код в более мно#

гословной...

— Подожди, — прерывает Калликла Фрасимах. — Хорошие комментарии

не повторяют код и не объясняют его. Они поясняют его цель. Коммен#

тарии должны объяснять намерения программиста на более высоком

уровне абстракции, чем код.

— Верно, — соглашается Исмена. — Если я ищу фрагмент, который мне нужно из#

менить или исправить, я просматриваю комментарии. Комментарии, повторяю#

щие код, на самом деле бесполезны, потому что все уже сказано в самом коде. Когда

я читаю комментарии, я хочу, чтобы они напоминали оглавление книги. Коммен#

тарии должны помочь мне найти нужный раздел, а после этого я начну читать

код. Гораздо быстрее прочитать одно предложение на обычном языке, чем ана#

лизировать 20 строк кода на языке программирования.

Исмена наливает себе вторую чашку кофе.

— Мне кажется, что люди, отказывающиеся писать комментарии, (1) думают, что

их код понятнее, чем мог бы быть, (2) считают, что другие программисты гораз#

до сильнее интересуются их кодом, чем есть на самом деле, (3) думают, что дру#

гие программисты умнее, чем есть на самом деле, (4) ленятся или (5) боятся, что

кто#то другой узнает, как работает их код.

— В этом смысле очень помогли бы обзоры кода, Сократ, — продолжает Исмена.

— Если кто#то утверждает, что комментарии писать не нужно, и получает во вре#

мя обзора кучу вопросов — если сразу несколько коллег спрашивают его: „Что про#

исходит в этом фрагменте твоего кода?“ — он начинает писать комментарии. Если

программист не дойдет до этого сам, его руководитель сможет заставить его пи#

сать комментарии.

— Я не утверждаю, Калликл, что ты ленишься или боишься, что кто#то другой пой#

мет твой код. Я работала с твоим кодом и могу сказать, что ты — один из лучших

программистов компании. Но будь чуточку добрее, а? Мне было бы легче сопро#

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

— Но это пустая трата времени, — не сдается Калликл. — Код хорошего програм#

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

граммистам, должно быть в самом коде.

— Нет! — Фрасимах вскакивает со стула. — В коде и так уже есть все, что нужно

знать компилятору! С таким же успехом можно было бы сказать, что все, что нуж#

но знать другим программистам, уже есть в двоичном исполняемом файле! Если

бы мы только были достаточно умны, чтобы уметь читать его! Информации о том,

что программист

собирался

сделать, в коде нет.

Фрасимах замечает, что вскочил с места, и садится.

— Сократ, это немыслимо. Почему мы спорим о важности комментариев? Во всех

книгах, которые я читал, говорится, что комментарии полезны и что на них не сто#

ит экономить. Мы зря теряем время.

— Успокойся, Фрасимах. Спроси у Калликла, как давно он

программирует.

— Действительно, как давно, Калликл?

— Ну, я начал с системы Акрополь IV где#то 15 лет назад.

Думаю, что я стал свидетелем рождения и гибели пример#

но десятка крупных приложений. А еще в десятке проектов

я работал над крупными компонентами. Две из этих систем

включали более полумиллиона строк кода, так что я знаю,

о чем говорю. Комментарии совершенно бесполезны.

Сократ бросает взгляд на более молодого программиста.

— Как говорит Калликл, с комментариями действительно связано много проблем,

и ты не поймешь это, пока не приобретешь больше опыта. Если комментировать

код неграмотно, комментарии не просто бесполезны — они вредны.

— Они бесполезны, даже если комментировать код грамотно, — заявляет Калликл.

— Комментарии менее точны, чем язык программирования. Лично я думаю, что

лучше вообще их не писать.

— Постой, — говорит Сократ. — Исмена согласна с тем, что комментарии менее

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

высокий уровень абстракции, а все мы знаем, что абстракция — один из самых

эффективных инструментов, имеющихся в нашем распоряжении.

— Я с этим не согласен, — заявляет Главкон. — Нам следует концентрироваться

не на комментариях, а на читабельности кода. При рефакторинге большинство

моих комментариев исчезает. После рефакторинга мой код может включать 20

или 30 вызовов методов, не нуждающихся в каких бы то ни было комментариях.

Хороший программист способен определять цель автора по самому коду; к тому

же какой толк в чтении о чьей#то цели, если известно, что код содержит ошибку?

Главкон умолкает, удовлетворенный своим вкладом в беседу. Калликл кивает.

— Похоже, вам никогда не приходилось изменять чужой код, — говорит Исмена.

Калликл делает вид, что его очень заинтересовали плитки на потолке.

— Почему бы вам не попробовать прочитать собственный код через шесть меся#

цев или год после его написания? Вы можете развивать и навык чтения кода, и навык

его комментирования. Никто не заставляет вас выбирать что#то одно. Если вы чи#

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

книги вам, наверное, хотелось бы иметь возможность быстро найти то, что вы ищете.

Тогда мне не пришлось бы переходить в режим сверхсосредоточенности и читать

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

— Хорошо, я понимаю, что возможность быстрого просмотра кода была бы удоб#

ной, — говорит Главкон. Он видел некоторые из программ Исмены, и они не ос#

тавили его равнодушным. — Но как быть с другим утверждением Калликла — что

комментарии устаревают по мере изменений кода? Я программирую лишь пару

лет, но даже я знаю, что никто не обновляет свои комментарии.

— Ну, и да, и нет, — говорит Исмена. — Если вы считаете комментарии неприкос#

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

соответствие между комментарием и кодом обычно говорит о том, что неверно

и то, и другое. Если какие#то комментарии плохи, это не означает, что само ком#

ментирование плохо. Пойду налью себе еще чашку кофе.

Исмена выходит из комнаты.

— Мое главное возражение против комментариев, — заявляет Калликл, — в том,

что они тратят ресурсы.

— Можете ли вы предложить способ минимизации времени написания коммен#

тариев? — спрашивает Сократ.

— Проектирование методов на псевдокоде, преобразование псевдокода в коммента#

рии и написание соответствующего им кода, — говорит Главкон.

— OK, это сработает, если комментарии не будут повторять код, — утверждает Кал#

ликл.

— Написание комментария заставляет вас лучше подумать над тем, что делает ваш

код, — говорит Исмена, возвращаясь с новой чашкой кофе. — Если комментарии

писать трудно, это означает, что код плох или вы недостаточно хорошо его по#

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

потраченное на его комментирование, не пропадает — оно указывает вам на не#

обходимую работу.

— Хорошо, — подводит итоги Сократ. — Не думаю, что у нас остались еще вопро#

сы. Похоже, Исмена сегодня была самой убедительной. Мы будем поощрять ком#

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

обзоры кода, чтобы все поняли, какие комментарии на самом деле полезны. Если

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

те ему, как он может его улучшить.

 

 

# читайте, как дефис.

Soulless1989 понравилось это

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...