Security Tesint: Sql injection

Post on 11-Jun-2015

987 views 2 download

description

доклад с SQA Days 9 (Kazan)

Transcript of Security Tesint: Sql injection

Security Testing: SQL Injection

Сергей Полаженко, SQALab

Тестирование безопасности

Этапы тестирования безопасности

Уровни тестирования безопасности

• Нормативно-правовой• Организационный• Технический• Физический

Основная проблема безопасности

Что такое SQL Injection

Что такое SQL Injection? (1/2)

Что такое SQL Injection? (2/2)

Почему SQL Injection (1/3)

Positive Technologies, 2009

SQL

Почему SQL Injection (2/3)

Positive Technologies, 2009

SQL

Почему SQL Injection (3/3)

Не обязательно web!

Как бороться?

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: обучение

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: дизайн приложения

• не хранить секреты в открытом виде

• принцип минимальных привилегий

• использовать параметрезированные запросы

• использовать хранимые процедуры

• сообщения об ошибках не должны содержать служебной информации

Способы борьбы: Фильтры данных

Способы борьбы: Application Firewall

Способы борьбы: Application Firewall

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: code review

• Экспертиза исходных текстов, как метод тестирования безопасности и защищённости программных продуктов

• http://software-testing.ru/library/testing/security/109

• http://securitywiki.ru/PraktikaJekspertizaIsxodnyxTekstov?v=oqu

Способы борьбы: code review

• Patterns && Practices: Code Review

• http://msdn.microsoft.com/en-us/library/ff648637.aspx

Способы борьбы: code review

• Проверка входных данных• Не использовать динамический sql (использовать

хранимые процедуры и параметризированные запросы)

• Минимальные привилегии• Секретные данные (поток данных)

Способы борьбы: code review

• Java EE – использовать PreparedStatement() • .NET – использовать параметризованные запросы

при помощи SqlCommand() or OleDbCommand() • PHP – использовать PDO с строго типизированными

парамтризованными запросами (использование bindParam())

• SQLite – использовать sqlite3_prepare() • и т.п.

• https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: input validation

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Проверяйте входные параметры

Способы борьбы: input validation

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Портрет типичного пользователя

Dr. User Evil

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: Continues integration checks

• Microsoft FxCop• "CA2100: Review SQL queries for security

vulnerabilities“

• Microsoft Source Code Analyzer for SQL Injection

• Microsoft Code Analysis Tool for .Net (CAT.NET)

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Тестирование: метод «черного ящика»

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы

• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks

• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Контакты

• polazhenko@gmail.com

• www.securitywiki.ru • Polazhenko.moikrug.ru