Безопасность
ASP.NET MVC 2 приложений
подготовлено
студентом гр. ПС-10м
Титаренко К. К.
Что
такое безопасность?
Устойчивость системы
к наиболее вероятным
атакам
Какие
атаки наиболее вероятны?
OWASP Top 10 (2010):
A1: Injection
A2: Cross-Site Scripting (XSS)
A3: Broken Authentication and Session Management
A4: Insecure Direct Object References
A5: Cross-Site Request Forgery (CSRF)
A6: Security Misconfiguration
A7: Insecure Cryptographic Storage
A8: Failure to Restrict URL Access
A9: Insufficient Transport Layer Protection
A10: Unvalidated Redirects and Forwards
Далее рассматриваются
Injection (инжекция)
Cross-Site Scripting (XSS, межсайтовый скриптинг)
Broken Authentication and Session
Management (некорректное управление аутентификацией и сессией)
Injection
В общем: передача инструкций под видом
данных.
Имеет множество подвидов.
Самый распространенный подвид — SQL Injection
(SQL инъекция).
SQL
Injection
Классический пример уязвимости: построение
запроса конкатенацией (форматированием) строк.

SQL
Injection
Примеры защиты: использование
параметризованных запросов, использование ORM в связке с LINQ провайдером.

Cross-Site
Scripting
Похоже на Injection в общем виде — передача
команд под видом данных.
Более конкретно: к примеру, передача
JavaScript кода как текста комментария — если разработчиком не предусмотрена
фильтрация ввода или кодирование вывода — код выполнится как только будет
передан браузеру.
Cross-Site
Scripting
Еще более конкретно: полагаясь на беспечность
разработчиков, передача кода

Cross-Site Scripting
Защита:

Broken Authentication and Session Management
Распространенные примеры:
передача важных данных по незащищенному
каналу (особенно актуально, если используется WiFi);
передача важных данных в составе строки GET-запроса
(потенциальная возможность утечки через HTTP referrer).
Broken Authentication and Session Management
Защита:
запрет на доступ к cookie из JavaScript кода,
передача важных cookie только по защищенному каналу:

Broken Authentication and Session Management
Защита:
требование обращения к действию контроллера
(или ко всему контроллеру) только по защищенному каналу:

Более
подробно
OWASP
(http://www.owasp.org/index.php/Main_Page)
MSDN (http://msdn.microsoft.com/en-us/library/dd394709.aspx)
Спасибо
за внимание!
Есть вопросы?