SlideShare a Scribd company logo
www.luxoft.com
SQL injection
Andriy Lisnichenko
28 April 2016
www.luxoft.com
SQL injection - что это?
 SQL - (англ. structured query language — «язык
структурированных запросов») — формальный непроцедурный
язык программирования, применяемый для создания,
модификации и управления данными в произвольной
реляционной базе данных
 Injection - Injection flaws, particularly SQL injection, are common in
Java EE applications. Injection occurs when user-supplied data is
sent to an interpreter as part of a command or query. The attacker’s
hostile data tricks the interpreter into executing unintended
commands or changing data.
www.luxoft.com
О чем не будем сегодня говорить
 Опускаем обсуждение паттернов взлома программ.
 Не говорим о способах вычисления структуры БД.
 Валидацию входных параметров.
 Демонстрация SQL аттак.
www.luxoft.com
О чем же доклад
 Как сделать продукт качественным и безопасным.
 Какие существуют для этого инструменты.
 Немного личного опыта.
www.luxoft.com
Инструменты
https://www.owasp.org/index.php/Category:OWASP_Tool
www.luxoft.com
OWASP
Open Web Application Security Project
https://www.owasp.org/index.php/Main_Page
www.luxoft.com
Статистика 2004 vs 2007
www.luxoft.com
Статистика 2013
www.luxoft.com
Защитит ли нас от SQL
injection использование
различных ORM?
www.luxoft.com
Использование ORM
 Плохой стиль – не рекомендую.
List results = session.createQuery("from Orders as orders where orders.id = " +
currentOrder.getId()).list();
List results = session.createSQLQuery("Select * from Books where author = " +
book.getAuthor()).list();
www.luxoft.com
Использование ORM
 Рекомендую.
Query hqlQuery = session.createQuery("from Orders as orders where orders.id = ?");
List results = hqlQuery.setString(0, "123-ADB-567-QTWYTFDL").list();
Query hqlQuery = session.createQuery("from Employees as emp where emp.incentive
> :incentive");
List results = hqlQuery.setLong("incentive", new Long(10000)).list();
List items = new ArrayList(); items.add("book"); items.add("clock"); items.add("ink");
List results = session.createQuery("from Cart as cart where cart.item in
(:itemList)").setParameterList("itemList", items).list();
www.luxoft.com
Использование ORM
Query hqlQuery = session.createQuery("from Books as books
where book.name = :name and book.author = :author");
List results = hqlQuery.setProperties(javaBean).list();
Query sqlQuery = session.createSQLQuery("Select * from Books where author = ?");
List results = sqlQuery.setString(0, "Charles Dickens").list();
www.luxoft.com
Личный опыт
 Используйте сканер для проверки кода
 Разные сканеры дают «одинаковые» отчеты
 Хороший код = хороший отчет = качественный продукт
 Конкатенация строк в данном ракурсе - это зло
www.luxoft.com
Спасибо за внимание
Андрей Лисниченко
AALisnichenko@luxoft.com

More Related Content

PDF
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
PDF
React со скоростью света: не совсем обычный серверный рендеринг
PDF
16 - Web-технологии. Технология AJAX
PPT
Модульное тестирование iOS-приложений.
PDF
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
PPT
Руководство по приготовлению бутербродов из Selenium
PPTX
I tmozg js_school
PPTX
Protecting your data from SQL Injection attacks
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
React со скоростью света: не совсем обычный серверный рендеринг
16 - Web-технологии. Технология AJAX
Модульное тестирование iOS-приложений.
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Руководство по приготовлению бутербродов из Selenium
I tmozg js_school
Protecting your data from SQL Injection attacks

Similar to Андрей Лисниченко "SQL Injection" (20)

PPTX
тестирование защищенности веб приложений
PPTX
Тестирование защищенности веб-приложений
PDF
SQL. Django, начало
PPTX
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
PPTX
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
PDF
Нереляционный SQL
PDF
Нереляционный SQL / Андрей Николаенко (IBS)
PPT
Базы данных лекция №7
PPT
PT Hackday#2
PDF
Не все базы данных одинаково полезны
PDF
Выступление Сергея Аверина, Badoo, на High Performance Conference
PDF
Не все базы данных одинаково полезны
PDF
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
PDF
ORM battle. MyBatis vs Hibernate
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
PPTX
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
DOC
0039
PPTX
SQL________________________________.pptx
PDF
Anton Tsitou "Cycle ORM and Graphs"
PPT
Advanced Sql Injection
тестирование защищенности веб приложений
Тестирование защищенности веб-приложений
SQL. Django, начало
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Нереляционный SQL
Нереляционный SQL / Андрей Николаенко (IBS)
Базы данных лекция №7
PT Hackday#2
Не все базы данных одинаково полезны
Выступление Сергея Аверина, Badoo, на High Performance Conference
Не все базы данных одинаково полезны
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
ORM battle. MyBatis vs Hibernate
Распространенные ошибки применения баз данных (Сергей Аверин)
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
0039
SQL________________________________.pptx
Anton Tsitou "Cycle ORM and Graphs"
Advanced Sql Injection
Ad

More from Anna Shymchenko (20)

PPTX
Константин Маркович: "Creating modular application using Spring Boot "
PPTX
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
PPTX
Евгений Руднев: "Programmers Approach to Error Handling"
PPTX
Александр Куцан: "Static Code Analysis in C++"
PPTX
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
PPTX
Орхан Гасимов: "Reactive Applications in Java with Akka"
PPTX
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
PPTX
Денис Прокопюк: “JMX in Java EE applications”
PDF
Роман Яворский "Introduction to DevOps"
PDF
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
PPTX
Светлана Мухина "Metrics on agile projects"
PPTX
Андрей Слободяник "Test driven development using mockito"
PPTX
Евгений Хыст "Application performance database related problems"
PPTX
Даурен Муса “IBM WebSphere - expensive but effective”
PPTX
Александр Пашинский "Reinventing Design Patterns with Java 8"
PPTX
Евгений Капинос "Advanced JPA (Java Persistent API)"
PPTX
Event-driven architecture with Java technology stack
PPTX
Do we need SOLID principles during software development?
PPTX
Guava - Elements of Functional Programming
PDF
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Константин Маркович: "Creating modular application using Spring Boot "
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
Евгений Руднев: "Programmers Approach to Error Handling"
Александр Куцан: "Static Code Analysis in C++"
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Орхан Гасимов: "Reactive Applications in Java with Akka"
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Денис Прокопюк: “JMX in Java EE applications”
Роман Яворский "Introduction to DevOps"
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Светлана Мухина "Metrics on agile projects"
Андрей Слободяник "Test driven development using mockito"
Евгений Хыст "Application performance database related problems"
Даурен Муса “IBM WebSphere - expensive but effective”
Александр Пашинский "Reinventing Design Patterns with Java 8"
Евгений Капинос "Advanced JPA (Java Persistent API)"
Event-driven architecture with Java technology stack
Do we need SOLID principles during software development?
Guava - Elements of Functional Programming
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Ad

Андрей Лисниченко "SQL Injection"