Има ли някакви опасения по отношение на сигурността при избора на потребителска парола на ниво приложение в ASP.NET срещу ниво на базата данни в SQL CLR? Виждал съм го и в двете посоки.
Моето мислене е, че в нивото на приложениетопаролата се изпраща само веднъж от браузъра към уеб сървъра. При изпълнението на базата данни паролата се изпраща втори път към базата данни за хеширане.
В последния случай някой използва SQL ServerProfiler ще може да вижда паролата, изпратена към процедурата или функцията в обикновен текст. Не съм твърде запознат с одита на SQL Server, но ако имаше възможност да улови подобна информация, това би представлявало и риск.
Отговори:
2 за отговор № 1Трябва да хеш паролата във вашето приложение, а не във вашата база данни. Това означава, че:
- Браузър за приложение -> парола се изпраща в обикновен текст, защитен от ssl
- Приложението към базата данни -> паролата винаги се хешира
Сега вече нямате проблем с някой, който изпълнява профилиране, защото паролите се хешират. Освен това, ако някой може да стартира профилиране, той вероятно може да направи много повече щети, след като прочете паролите ...
1 за отговор № 2
Хеш в приложния слой, използвайки scrypt или bcrypt, Не зависете от алгоритми за хеширане с общо предназначение (MD5, SHA1, SHA512 и т.н.), защото тези причини.
Тук са .Net реализации за scrypt и bcrypt.