Security Tesint: Sql injection

39
Security Testing: SQL Injection Сергей Полаженко, SQALab

description

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

Transcript of Security Tesint: Sql injection

Page 1: Security Tesint: Sql injection

Security Testing: SQL Injection

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

Page 2: Security Tesint: Sql injection

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

Page 3: Security Tesint: Sql injection

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

Page 4: Security Tesint: Sql injection

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

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

Page 5: Security Tesint: Sql injection

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

Page 6: Security Tesint: Sql injection

Что такое SQL Injection

Page 7: Security Tesint: Sql injection

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

Page 8: Security Tesint: Sql injection

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

Page 9: Security Tesint: Sql injection

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

Positive Technologies, 2009

SQL

Page 10: Security Tesint: Sql injection

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

Positive Technologies, 2009

SQL

Page 11: Security Tesint: Sql injection

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

Page 12: Security Tesint: Sql injection

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

Page 13: Security Tesint: Sql injection

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

Page 14: Security Tesint: Sql injection

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

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

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

Page 15: Security Tesint: Sql injection

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

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

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

Page 16: Security Tesint: Sql injection

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

Page 17: Security Tesint: Sql injection

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

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

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

Page 18: Security Tesint: Sql injection

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

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

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

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

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

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

Page 19: Security Tesint: Sql injection

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

Page 20: Security Tesint: Sql injection

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

Page 21: Security Tesint: Sql injection

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

Page 23: Security Tesint: Sql injection

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

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

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

Page 24: Security Tesint: Sql injection

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

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

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

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

Page 25: Security Tesint: Sql injection

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

• Patterns && Practices: Code Review

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

Page 26: Security Tesint: Sql injection

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

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

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

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

Page 27: Security Tesint: Sql injection

Способы борьбы: 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

Page 28: Security Tesint: Sql injection

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

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

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

Page 29: Security Tesint: Sql injection

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

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

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

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

Page 30: Security Tesint: Sql injection

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

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

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

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

Dr. User Evil

Page 31: Security Tesint: Sql injection

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

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

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

Page 32: Security Tesint: Sql injection

Способы борьбы: 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)

Page 33: Security Tesint: Sql injection

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

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

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

Page 34: Security Tesint: Sql injection

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

Page 35: Security Tesint: Sql injection

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

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

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

Page 36: Security Tesint: Sql injection

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

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

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

Page 39: Security Tesint: Sql injection

Контакты

[email protected]

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