Нива на сигурност
По принцип за повечето уеб приложения основните задачи за внедряване на защита (в допълнение към тези, идентифицирани по време на моделирането на заплахи) винаги са едни и същи:
Удостоверяване
На първо място, трябва да удостоверите потребителите. Удостоверяването задава въпроса: кой отива? В крайна сметка той определя кой работи с вашето приложение от другата страна.
Упълномощаване
Поверителност
Когато потребител взаимодейства с приложение, трябва да сте сигурни, че никой друг не може да види чувствителните данни, които обработва. Следователно е необходимо да се криптира каналът между клиентския браузър и уеб сървъра. Освен това данните, съхранявани в базата данни (или под формата на бисквитки от страна на клиента), може да се наложи да бъдат криптирани, така че дори администраторът на базата данни или друг персонал на компанията да не може да види тези данни.
Почтеност
Удостоверяване
Удостоверяването е процес на определяне на самоличността на потребителя и предоставяне на гаранции за тази самоличност. Процесът на удостоверяване е подобен на регистриране на участници в конференцията. Първо, покажете някои доказателства за самоличността си (като паспорт или шофьорска книжка). Второ, след като самоличността ви бъде потвърдена спрямо тази информация, вие получавате лична значка за конференция или маркер, който носите със себе си през цялото време на конференцията.
Всеки, който ви срещне на конференцията, може лесно да ви идентифицира, като погледне тази значка, която обикновено съдържа основна идентифицираща информация, като вашето име и фамилия. Целият този процес е пример за удостоверяване. След като бъде установена самоличност, маркерът я потвърждава, така че където и да отидете в дадена частобласт, вашата самоличност ще бъде известна.
В приложенията на ASP.NET удостоверяването се изпълнява от една от следните възможни системи за удостоверяване:
формуляри за удостоверяване;
специален процес на удостоверяване.
Във всеки случай потребителят представя някакъв вид самоличност при регистрация в системата. Идентичността на потребителя се проследява по различни начини в зависимост от вида на удостоверяването. Например операционната система Windows използва 96-битов номер, нареченSID (идентификатор за сигурност), за да идентифицира всеки влязъл потребител. При удостоверяване с формуляри на ASP.NET, на потребителя се издава билет за удостоверяване на формуляр, който е комбинация от стойности, които са криптирани и поставени в бисквитка.
Права на заемане
Имитирането е процес на изпълнение на код в контекста на (или от името на) друг потребител. По подразбиране ASP.NET кодът се изпълнява под фиксиран потребителски акаунт, специфичен за машината (обикновено мрежова услуга в IIS 8). За да изпълните код, използвайки различна самоличност, можете да използвате вградените функции за имитация на ASP.NET. Можете да използвате предварително дефиниран потребителски акаунт или можете да приемете самоличност на потребител, ако този потребител вече е бил удостоверен с акаунт в Windows.
Упълномощаване
Има няколко причини да използвате фиксиран акаунт за изпълнение на ASP.NET код. В почти всички приложения правата, предоставени на потребителя, не съответстват на правата, изисквани от приложението, работещо от името на потребителя. Обикновено кодът се нуждае от по-широк набор от привилегии, за да вземе решениезадача за самоличност и не искате да давате тези разрешения на всеки потребител, който има достъп до вашето приложение.
Например може да се наложи кодът да създаде записи в регистрационния файл за възможни повреди, дори ако на потребителя не е разрешено да пише директно в регистъра на събитията, файла или базата данни на Windows. По същия начин ASP.NET приложенията трябва винаги да имат достъп до C:\[Windows Directory]\Microsoft .NET\Framework\[Version]\Temporary ASP.NET Files за създаване и кеширане на компилирани машинни езикови версии на уеб страници.
В някои редки случаи на кода е разрешено временно да приеме самоличността на потребителя. Този подход се използва най-често при изграждане на ASP.NET приложения за локални мрежи, където потребителите вече имат добре дефинирани набори от Windows привилегии. В този случай ще трябва да разширите своя арсенал за сигурност, като заемете права, както беше споменато в предишния раздел.
Поверителност и почтеност
Целостта гарантира, че данните не могат да бъдат променяни от никого по време на предаване по мрежата или съхранявани в хранилище. И двете се основават на криптиране.
Както споменахме по-рано, уеб приложенията може да се нуждаят от криптиране поради две причини:
За защита на комуникациите (пренос на данни по мрежата). Например искате да направите невъзможно номерата на кредитни карти, използвани в система за електронна търговия, да бъдат откраднати чрез отворени интернет канали. Стандартният подход за решаване на този проблем е използването на SSL. В допълнение, SSL прилага цифрови подписи, за да осигури гаранция за цялост. SSL не се прилага от ASP.NET, но е средство, предоставено от IIS. Кодът на уеб страницата (или уеб услугата) не зависи от това дали се използва SSL илиНе.
За защита на постоянна информация (в база данни или във файл). Например, може да искате да съхраните номера на кредитната карта на потребителя в база данни за бъдеща употреба. Съхраняването на такива данни в обикновен текст с надеждата, че уеб сървърът няма да бъде хакнат, е лоша идея. Вместо това трябва да използвате класовете за криптиране, които .NET предлага, и ръчно да шифровате данните, преди да ги съхраните.
Няма значение, че .NET класовете, които извършват криптирането, не са пряко свързани с ASP.NET. Всъщност те могат да се използват във всяко .NET приложение.
Свързвайки всичко заедно
Когато потребителите за първи път посещават уебсайт, те са анонимни. С други думи, вашето приложение не знае (и не се интересува) кои са те. Ако не ги удостоверите, всичко ще остане така.
По подразбиране анонимните потребители имат достъп до всяка ASP.NET страница. Но когато потребител поиска уеб страница, която не е достъпна анонимно, има няколко стъпки (показани на фигурата по-долу):
Заявката се изпраща до уеб сървъра. Тъй като самоличността на потребителя не е известна в този момент, потребителят е подканен да се регистрира, като използва специална уеб страница или диалоговия прозорец за регистрация на браузъра. Конкретните детайли на процеса на регистрация зависят от вида на използваното удостоверяване.
Потребителят предоставя своята самоличност, която след това се проверява или от вашето приложение (в случай на удостоверяване на формуляри), или автоматично от IIS (в случай на удостоверяване на Windows).
Когато потребител поиска защитена уеб страница, която е отворена само за определени потребители или роли, процесът е подобен, но се добавя допълнителна стъпка:
Сертификат илиролите на удостоверения потребител се сравняват със списъка с разрешени потребители и роли. Ако потребителят присъства в списъка, достъпът до ресурса му се предоставя; в противен случай достъпът ще бъде отказан.
Потребителите, на които е отказан достъп, са поканени да се регистрират отново или са пренасочени към уеб страница със съобщение, че достъпът е отказан.