Для створення модуля захисту використовувалися механізми захисту з використанням технології ASP.NET 2.0. це:

1. Механізм управління доступом

  • Аутентифікація. На сторінці авторизації Default.aspx користувачам вводять у форму ім'я та пароль, після чого додаток виконає аутентифікацію своїми засобами. Незалежно від того, як додаток обробляє введені дані, за замовчуванням вони будуть відправлятися на сервер як запити HTTP, без будь-якого шифрування. Протокол HTTP (Hypertext Transfer Protocol, протокол передачі гіпертексту) використовується для взаємодії web-оглядачів з web - серверами. Кращим способом забезпечення конфіденційності даних, введених у форму web-додатки, налаштування SSL сертифікат на сервері IIS і вимога використання протоколу HTTPS для форми введення облікових даних. Протокол HTTPS (Hypertext Transfer Protocol Secure, протокол захищеної передачі гіпертексту) - варіант протоколу HTTP, що використовує шифрування. Цей протокол використовується майже кожним web-сайтом, що займаються електронною комерцією, для захисту інформації про користувачів і захисту користувачів від введення конфіденційної інформації на підроблений web-сервер, який видає себе за інший сервер. ASP.NET 2.0 містить клас FormsAuthentication, який є основою аутентифікації за допомогою форм. Цей клас включає наступні властивості, доступні тільки для читання:
  • FormsCookieName — повертає ім'я файлу cookie, використовуваного в поточному додатку;
  • FormsCookiePath — повертає шлях до файлу cookie, використовуваному в поточному додатку;
  • RequiressL-вказує, чи повинен файл cookie передаватися з використанням SSL (тобто тільки по протоколу HTTPS);
  • slidingExpiration-вказує, чи включено поетапне закінчення терміну дії. Якщо воно включено, тайм-аут аутентифікації користувача скидається для кожного web-запиту.
< P>крім того, можна викликати такі методи:

  • Authenticate — намагається порівняти облікові дані з даними із зазначеного сховища облікових даних;
  • Decrypt — повертає екземпляр класу FormsAuthenticationTicket,

беручи дійсний шифрований квиток аутентифікації, отриманий з cookie;

  • Encrypt — створює рядок з зашифрованим квитком аутентифікації, який можна включити у файл cookie, приймаючи об'єкт FormsAuthenticationTicket;
  • GetAuthCookie-створює для зазначеного користувача файл cookie, який використовується для аутентифікації;
  • GetRedirecturl — повертає адресу URL, за яким будуть перенаправлятися запити, які потрібно перенаправити на сторінку введення облікових даних;
  • HashPasswordForstoringinConfigFile— приймає пароль і рядок, що вказує тип хешування, і створює хешований пароль, який можна зберегти у файлі конфігурації. Якщо додаток зберігає облікові дані у файлі Web.config і хешіруег паролі, включіть цей метод в утиліту, якою адміністратори будуть користуватися для додавання користувачів і скидання паролів;
  • RedirectFromLoginPage -- перенаправляє аутентифікованих користувачів назад, по вихідному запитаному адресою URL. Цей метод необхідно викликати після перевірки облікових даних користувача за допомогою методу Authenticate. Цьому методу потрібно передати рядок, що унікально ідентифікує користувача, яку метод буде використовувати для створення файлу cookie, і значення типу Boolean. Якщо це значення true, оглядач зможе використовувати один файл cookie в декількох сеансах;
  • RenewTicketifoid — при виконанні умови оновлює об'єкт FormsAuthencicationTicket, термін дії якого поетапно закінчується;
  • setAuthcookie-створює квиток аутентифікації і прикріплює його до набору вихідних відповідей файлу cookie. Перенаправлення не виконує;
  • signout — видаляє квиток аутентифікації, виконуючи вихід користувача з системи.

Важливим атрибутом секції <forms> є атрибут timeout визначає час бездіяльності між запитами (у хвилинах), по закінченні якого користувачеві доведеться заново проходити авторизацію, щоб знизити ймовірність несанкціонованого використання це число слід зменшити. Атрибут slidingExpiration – вказує, чи потрібно перестворювати cookie-файл і квиток авторизації, якщо закінчується таймаут. Його значенням необхідно встановити значення true.

  • Авторизація. Авторизація – це перевірка прав доступу до певного ресурсу, або перевірка привілеїв на виконання певних дій.

Середа ASP.NET надає два способи авторизації:

  • Авторизація доступу до файлу
  • Авторизація доступу до URL

Авторизація доступу до файлу – це стара технологія, що має ряд недоліків: необхідність підтримки списків контролю доступу, більш того, при передачі файлів по протоколу FTP списки ACL часто губляться, що часто призводить до небажаних наслідків. Авторизація доступу до URL є нововведенням, що з'явилося в ASP.NET 2.0. Для використання авторизації доступу до URL спочатку потрібно налаштувати файл конфігурації проекту. За налаштування авторизації відповідає тег <authorization>, який може містити в собі тільки два типи елементів:

  • <allow> – дозволяє доступ до ресурсу заданим користувачам і групам користувачів.
  • <deny> – забороняє доступ до ресурсу заданим користувачам і групам користувачів.

Кожен з цих елементів підтримує 3 атрибути:

  • users – задає розділений комами список імен користувачів.
  • roles – задає розділений комами список імен користувальницьких груп.
  • verbs – задає вирази http

до даних трьох атрибутів застосовні теги & lt;allow & gt; і & lt;deny & gt;, допустимими значеннями є: GET, HEAD, POST і*, що активізує всі перераховані вище режими. Атрибут users підтримує два спеціалізованих позначення:

& laquo;* & raquo; & # 8211; всі користувачі;

«?» – анонімні користувачі.

За замовчуванням всі файли конфігурації, включаючи і файл machine.config, дозволяють доступ всім користувачам: <allow users=»*» />. Змінити значення у файлі machine.config немає необхідності, оскільки при виявленні протиріч силу мають записи з того файлу, який ближче до проекту, тобто файлу Web.config. Список може містити безліч тегів <allow> <deny>, і, щоб не виникало плутанини, ASP.NET зчитує параметри знизу вгору.  Коли виникає необхідність застосування в Web-проекті аутентифікації на основі форми, а також вибір такого засобу авторизації, яке б не залежало від налаштувань безпеки сервера, застосовується рольова безпека. Раніше використовується аутентифікація формою, авторизацію доступу до URL, але інформація про користувачів і ролях зберігається в каталозі безпеки Windows, а наприклад в XML файлі.

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

2. Захист cookies від крадіжки, відтворення та зміни< / strong > < / span>

Шифрування. В ASP.NET включена можливість шифрувати і перевіряти файли cookie, що зберігають дані про аутентифікації, але такий захист вимагає від web-сервера додаткових ресурсів. Тип шифрування та перевірки визначається атрибутом protection секції<forms & gt; у файлі web.config. Якщо атрибут protection не визначений, за замовчуванням йому присвоюється значення All. Якщо цей атрибут має значення Encryption, файл cookie шифрується за допомогою алгоритму 3-DES. Шифрування забезпечує конфіденційність даних, що зберігаються у файлі cookie, але не забезпечує їх перевірку. Якщо атрибут protection має значення Validation, як показано в наступному прикладі, сервер перевіряє дані файлу cookie під час кожної транзакції, щоб зменшити ймовірність того, що вони були змінені після того, як оглядач відправив їх на сервер. Для отримання оптимального рівня безпеки (з невеликим збільшенням навантаження) необхідно присвоїти атрибуту protection значення All.

  • Перевірка MAC (Message Authentication Code) на допустимість. Як мінімум, слід запобігти модифікацію або створення нового квитка, включивши перевірку MAC (Message Authentication Code) на допустимість. В результаті цієї перевірки кінець квитка додається хеш-сигнатура, яка дозволяє серверу упевнитися, що ніхто сторонній не модифікував квиток. Для цього хеш обчислюється заново і звіряється з сигнатурою.
  • Захист від відтворення cookies. Суть захисту полягає в тому, що сервер позначає, які cookie призначені для самого сервера. Cookie, позначені таким чином, з Javascript не видно. Для реалізації потрібно скористатися властивість HttpOnly класу Cookie.

3. Запобігання атак за рахунок перевірки введення

Зловмисний клієнт може використовувати XSS для крадіжки cookie аутентифікації або зміни контенту, що показується в браузері. Для боротьби з XSS-атак необхідно проводити перевірку введення і відхилення будь-яких вхідних даних, які можуть містити XSS-сценарії, використовуючи HTML-кодування будь-яких вхідних даних, відлуння яких повертається клієнту, — це робить XSS-сценарії нешкідливими. ASP.NET 2.0 підтримує режим validateRequest, в якому розпізнаються типові XSS-сигнатури у вхідних даних ASP.NET-сторінок і завершуються містять їх запити. Якщо ASP.NET сторінка з багатим функціоналом приймає від користувача дані з HTML, наприклад, є можливість використовувати HTML форматування, доводиться відключати request validation. В такому випадку необхідно фільтрувати всі HTML теги крім пари базових, наприклад <b> <i> на стороні сервера.

Фільтрація може бути двох типів:

  • з блокуванням підозрілих значень параметрів;
  • з приведенням до безпечних значень параметра.

Фільтрація з блокуванням зводиться до того, що, якщо в параметрі виявлені підозрілі елементи (наприклад, лапки, символ < >, які обмежують HTML-теги), то виконання скрипта блокується, а користувачеві виводиться повідомлення про помилку. У цього типу фільтрації є свої недоліки. Захист з блокуванням підозрілих параметрів може відреагувати і на цілком адекватні значення. Фільтрація приведенням до безпечного виду — оптимальний тип фільтрації. Проте, в цьому випадку, всі підозрілі значення будуть приводитися до безпечного виду.

Тепер при вставці зловмисником шкідливого скрипта він html-перекодовується в внаслідок чого скрипт не виконається, а просто з'явитися в коментарях не представляючи ніякої загрози.

Додати коментар

Ваш e-mail не буде опублікований. Обов'язкові поля позначені *

*

Можна використовувати наступні < abbr title= "HyperText Markup Language" >HTML < /abbr> - теги та атрибути: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Station by PageLines