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

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

  • Upload
    sqalab

  • View
    1.777

  • Download
    0

Embed Size (px)

DESCRIPTION

Доклад на SQA Days-9, Казань, 22-23 апреля 2011

Citation preview

Page 1: Сергей Полаженко - Security Testing: SQL Injection

Security Testing: SQL Injection

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

Page 2: Сергей Полаженко - Security Testing: SQL Injection

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

Page 3: Сергей Полаженко - Security Testing: SQL Injection

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

Page 4: Сергей Полаженко - Security Testing: SQL Injection

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

• Нормативно-правовой

• Организационный

• Технический

• Физический

Page 5: Сергей Полаженко - Security Testing: SQL Injection

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

Page 6: Сергей Полаженко - Security Testing: SQL Injection

Что такое SQL Injection

Page 7: Сергей Полаженко - Security Testing: SQL Injection

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

Page 8: Сергей Полаженко - Security Testing: SQL Injection

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

Page 9: Сергей Полаженко - Security Testing: SQL Injection

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

Positive Technologies, 2009

SQL

Page 10: Сергей Полаженко - Security Testing: SQL Injection

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

Positive Technologies, 2009

SQL

Page 11: Сергей Полаженко - Security Testing: SQL Injection

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

Page 12: Сергей Полаженко - Security Testing: SQL Injection

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

Page 13: Сергей Полаженко - Security Testing: SQL Injection

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

Page 14: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 15: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 16: Сергей Полаженко - Security Testing: SQL Injection

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

Page 17: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 18: Сергей Полаженко - Security Testing: SQL Injection

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

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

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

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

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

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

служебной информации

Page 19: Сергей Полаженко - Security Testing: SQL Injection

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

Page 20: Сергей Полаженко - Security Testing: SQL Injection

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

Page 21: Сергей Полаженко - Security Testing: SQL Injection

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

Page 22: Сергей Полаженко - Security Testing: SQL Injection

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

• www.owasp.org/index.php/Web_Application_Firewall

• Open Source:

– AQTronix - WebKnight

– Trustwave SpiderLabs - ModSecurity

Page 23: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 24: Сергей Полаженко - Security Testing: SQL Injection

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

• Экспертиза исходных текстов, как метод

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

программных продуктов

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

• http://securitywiki.ru/PraktikaJekspertizaIsxodnyxTekstov

?v=oqu

Page 25: Сергей Полаженко - Security Testing: SQL Injection

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

• Patterns && Practices: Code Review

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

Page 26: Сергей Полаженко - Security Testing: SQL Injection

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

• Проверка входных данных

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

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

запросы)

• Минимальные привилегии

• Секретные данные (поток данных)

Page 27: Сергей Полаженко - Security Testing: 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_Prevent

ion_Cheat_Sheet

Page 28: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 29: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструментыПроверяйте входные

параметры

Page 30: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Портрет типичного

пользователя

Dr. User Evil

Page 31: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 32: Сергей Полаженко - Security Testing: 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 Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 34: Сергей Полаженко - Security Testing: SQL Injection

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

Page 35: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

Page 36: Сергей Полаженко - Security Testing: SQL Injection

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

• Профилактика– Обучение

– Дизайн приложения

– Code review

– Input validation

– Continues integration checks

• Тестирование– Черным ящиком

– Белым ящиком

– Серым ящиком

– Fuzzy

– Автоматизированные инструменты

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

Контакты

[email protected]

• www.securitywiki.ru

• Polazhenko.moikrug.ru