Jump to content

Есть ли защита в UniGUI от SQL injection?


dbf_usr

Recommended Posts

Интересует есть ли в UniGUI защита от SQL injection? И если есть то где об этом читать в доке или может кто краткий примерчик бросит.

Если нет таковой, то поделитесь опытом кто как решал проблему.

Всем заранее спасибо!

Link to comment
Share on other sites

7 minutes ago, dbf_usr said:

Интересует есть ли в UniGUI защита от SQL injection?

Простите, а что в вашем понимании означает SQL Injection?

Link to comment
Share on other sites

19 minutes ago, Sherzod said:

Простите, а что в вашем понимании означает SQL Injection?

"Внедрение SQL-кода (англ. SQL injection) — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода."

https://ru.wikipedia.org/wiki/Внедрение_SQL-кода

для примера, если в UniEdit, где пользователь должен ввести имя пользователя или пароль ввести следующее "

' UNION DELETE FROM users *;

и если пользователь угадает название таблицы, то можно остаться вообще без данных... Это и есть SQL Injection.

Теперь собственно правильный вопрос: поскольку очень часто приходится собирать запросы в динамике то очень удобно использовать конструкцию типа UniQuery1.sql:='Select * from ........' и подставлять прямо в запрос значения к примеру из UniEdit и это очень опасно, по описаной выше причине. Можно собрать на лету запрос с параметрами, запихнуть его в UniQuery, а потом присваивать параметры, это долго и много кода - гораздо больше. Ну есть еще путь все выписать UDF но их придется писать под каждый случай десятками или универсальную на десять страниц, что тоже не правильно. Отсюда вопрос предусмотрена ли защита в компонентах от  SQL Injection и как ею можно воспользоваться? К примеру бывает реализация отлова запроса в строке, бывает экранирование встроенного запроса в строке, что бы он воспринимался как текст, а не часть запроса.

Мой вопрос понятен?

Link to comment
Share on other sites

11 hours ago, stas said:

Защиты нет, потому что это не php

UniGui этому не подвержена.

Подвержена. Просто Вы не проводили эксперименты. А я увидел своими глазами что можно почистить таблицы к примеру или удалить объекты базы. Но это при определенных условиях... Увидел = проделал своими руками. Это при условии что доступы на уровне БД это позволяют сделать + если запрос формируется в приложении: Query1.SQL:='Select * From...'

Сейчас тестирую макросы, передаю запрос а потом подставляю параметры. Проверю - отпишусь. Собственно для этого и смотрю что реально прилетает на сервер...

Link to comment
Share on other sites

Quote

Подвержена

это никак не связано с унигуем, но с вашим кодом. подвержен именно ваш код. как с этим бороться - уже сказали.

Quote

Собственно для этого и смотрю что реально прилетает на сервер...

 
на сервер прилетает то, что вы на него шлёте :) как ни странно...
Link to comment
Share on other sites

On 5/15/2019 at 11:48 AM, dbf_usr said:

Подвержена. Просто Вы не проводили эксперименты. А я увидел своими глазами что можно почистить таблицы к примеру или удалить объекты базы. Но это при определенных условиях... Увидел = проделал своими руками. Это при условии что доступы на уровне БД это позволяют сделать + если запрос формируется в приложении: Query1.SQL:='Select * From...'

Сейчас тестирую макросы, передаю запрос а потом подставляю параметры. Проверю - отпишусь. Собственно для этого и смотрю что реально прилетает на сервер...

Конечно, если есть строка редактирования и запрос который выполняет ddl скрипт из этой строки, то будет.

Но это добровольный SQL injection.

 

Link to comment
Share on other sites

+1 за параметризированные запросы, вообще отвыкайте строить запрос динамически. В идеале возможно вообще использовать хранимые процедуры, а там размер параметров вообще задается и никуда ты с подводной лодки не денешься. :)

Link to comment
Share on other sites

3 hours ago, zilav said:

+1 за параметризированные запросы, вообще отвыкайте строить запрос динамически. В идеале возможно вообще использовать хранимые процедуры, а там размер параметров вообще задается и никуда ты с подводной лодки не денешься. :)

+1. При работе с большими базами никто не использует динамические запросы создаваемые на клиенте. При таком подходе сплошные минусы. Практически всё что вы делаете на клиенте можно (и нужно) делать на сервере.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...