рівні безпеки
В основному для більшості веб-додатків основні завдання для реалізації захисту (крім ідентифікованих під час моделювання загроз) завжди одні й ті самі:
Аутентифікація
Перш за все, ви повинні автентифікувати користувачів. Аутентифікація ставить питання: хто йде? Зрештою вона визначає, хто працює з вашим додатком з іншого боку.
Авторизація
Конфіденційність
Коли користувач працює з програмою, ви повинні гарантувати, що ніхто інший не зможе бачити важливі дані, які він обробляє. Таким чином, необхідно шифрувати канал між браузером клієнта та веб-сервером. Більше того, можливо, доведеться шифрувати дані, які зберігаються в базі даних (або у формі cookie-наборів на стороні клієнта), щоб навіть адміністратор бази даних або інший персонал компанії не міг бачити ці дані.
Цілісність
Аутентифікація
Аутентифікація – процес визначення ідентичності користувача та забезпечення гарантій цієї ідентичності. Процес автентифікації аналогічний до реєстрації учасників конференції. По-перше, ви пред'являєте деяке свідчення, що доводить вашу ідентичність (на кшталт паспорта або водійських прав). По-друге, тільки-но ідентичність перевірена за цією інформацією, ви отримуєте особистий значок учасника конференції, або маркер, який постійно носите із собою протягом усієї конференції.
Будь-хто, хто вас зустріне на конференції, зможе легко визначити вашу ідентичність, поглянувши на цей значок, який зазвичай містить базову ідентифікуючу інформацію, таку як ім'я та прізвище. Весь цей процес – приклад аутентифікації. Як тільки ідентичність встановлена, маркер підтверджує її, так що куди б ви не пішли в межах конкретноїобласті, ваша особа буде відомою.
У додатках ASP.NET автентифікація реалізується однією з наступних можливих систем автентифікації:
автентифікація за допомогою форм;
спеціальний процес автентифікації.
У кожному випадку користувач пред'являє певне посвідчення під час реєстрації в системі. Ідентичність користувача відстежується різними способами залежно від типу аутентифікації. Наприклад, операційна система Windows використовує 96-бітове число, званеSID (security identifier - ідентифікатор безпеки) для ідентифікації кожного користувача. При аутентифікації за допомогою форм ASP.NET користувачу видається аутентифікуючий мандат форми, що є комбінацією значень, які шифруються і поміщаються в cookie-набір.
Запозичення прав
Запозичення прав (impersonation) - це процес виконання коду в контексті (або від імені) іншого користувача. За замовчуванням код ASP.NET виконується від імені фіксованого, специфічного для конкретної машини, облікового запису користувача (зазвичай Network Service в IIS 8). Щоб виконати код із застосуванням іншої ідентичності, можна скористатися вбудованими в ASP.NET можливостями запозичення прав. Можна застосувати певний обліковий запис користувача або припустити ідентичність користувача, якщо цей користувач вже був автентифікований за допомогою облікового запису Windows.
Авторизація
Існує кілька причин застосування фіксованого облікового запису для запуску коду ASP.NET. Майже у всіх додатках права, видані користувачеві, не відповідають правам, які потрібні програмі, що працює від імені користувача. Як правило, код потребує більш широкого набору привілеїв, щоб вирішуватизавдання ідентифікації, і ви не захочете надавати такі права кожному користувачеві, який може звертатися до вашого додатку.
Наприклад, коду може знадобитися створювати журнальні записи про можливі збої, навіть якщо даному користувачеві не дозволено безпосередньо записувати в журнал подій Windows, файл або базу даних. Аналогічно програми ASP.NET завжди повинні мати право доступу до каталогу C:\[Каталог Windows]\Microsoft .NET\Framework\[Версія]\Temporary ASP.NET Files, щоб створювати та кешувати скомпіловані версії веб-сторінок машинною мовою.
У деяких випадках коду надають можливість тимчасово припускати ідентичність користувача. Такий підхід найчастіше використовується при створенні програм ASP.NET для локальних мереж, в яких користувачі вже мають певні набори привілеїв Windows. У цьому випадку вам доведеться поповнити свій арсенал засобів безпеки запозичення прав, як згадувалося в попередньому розділі.
Конфіденційність та цілісність
Цілісність - це забезпечення неможливості зміни даних ніким під час передачі через мережу або збереження в сховище. І те, й інше базується на шифруванні.
Як згадувалося раніше, шифрувати веб-додатки може бути потрібним з двох причин:
Для захисту комунікацій (передавання даних через мережу). Наприклад, ви хочете унеможливити крадіжку номерів кредитних карток, що використовуються в системі електронної комерції, по відкритих каналах Інтернету. Стандартний підхід до вирішення цієї проблеми передбачає застосування SSL. Крім того, SSL реалізує цифрові підписи для гарантування цілісності. SSL не реалізований ASP.NET, а є засобом IIS. Код веб-сторінки (або веб-служби) не залежить від використання SSL абоні.
Для захисту постійної інформації (у базі даних чи файлі). Наприклад, може знадобитися зберегти номер кредитної картки користувача у базі даних для майбутнього використання. Зберігання таких даних у вигляді простого тексту, сподіваючись на те, що веб-сервер не буде зламаний, є поганою ідеєю. Натомість слід застосовувати класи шифрування, які пропонує .NET і вручну шифрувати дані перед їх збереженням.
Не важливо, що класи .NET, які виконують шифрування, безпосередньо не пов'язані з ASP.NET. Насправді їх можна використовувати у будь-яких додатках .NET.
Зв'язуємо всі разом
Коли користувачі вперше відвідують веб-сайт, вони анонімні. Іншими словами, ваш додаток не знає (і не дбає про те), хто вони такі. Якщо ви не аутентифікуєте їх, то все так і залишиться.
За замовчуванням анонімні користувачі можуть звертатися до будь-якої сторінки ASP.NET. Але коли користувач запитує веб-сторінку, анонімний доступ до якої закритий, виконується кілька кроків (наведено на малюнку нижче):
Запит надсилається веб-серверу. Оскільки ідентичність користувача в цей момент не відома, йому пропонується зареєструватися за допомогою спеціальної веб-сторінки або діалогового вікна реєстрації браузера. Специфічні деталі процесу реєстрації залежать від типу аутентифікації, що застосовується.
Користувач надає посвідчення, яке потім верифікується - або вашим додатком (у разі автентифікації за допомогою форм), або автоматично засобами IIS (у разі автентифікації Windows).

Коли користувач запитує захищену веб-сторінку, відкриту лише для певних користувачів або ролей, процес аналогічний, але додається додатковий крок:
Посвідчення аборолі автентифікованого користувача порівнюються зі списком дозволених користувачів та ролей. Якщо користувач є у списку, йому відкривається доступ до ресурсу; інакше доступ буде закрито.
Користувачі, яким відмовлено у доступі, або запрошуються на повторну реєстрацію, або перенаправляються на веб-сторінку із повідомленням про закриття доступу.