powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / сложная процедура
11 сообщений из 36, страница 2 из 2
сложная процедура
    #38313132
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кста рабочий вариант от Cygapb-007 ,таки
...
Рейтинг: 0 / 0
сложная процедура
    #38313142
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileCygapb-007

объясните, пожалуйста, что случится при вот таком вызове процедуры?
Код: sql
1.
exec addWeight '0,0 truncate table TWeight--', '', ''


Где будет? У нормального архитектора будет permission denied ;-)
Понятное дело, что если у обычного юзера, юзающего процедуру есть права на truncate table, то тут уже вопросы к архитектору..
...
Рейтинг: 0 / 0
сложная процедура
    #38313149
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну хорошо, напишем так (37 знаков)
Код: sql
1.
'0)update employes set oklad=1000000--'
...
Рейтинг: 0 / 0
сложная процедура
    #38313151
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007ну хорошо, напишем так (37 знаков)
Код: sql
1.
'0)update employes set oklad=1000000--'


вот это уже ближе к истине) Я согласен)))
...
Рейтинг: 0 / 0
сложная процедура
    #38313166
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да с чего вы вообще взяли что есть принципиальная овзможность вызывать такого рода процки простым пользователям?

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

Или будете?
...
Рейтинг: 0 / 0
сложная процедура
    #38313171
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileВы же не будете вставлять защиту от инжекшена на каждый дин. эскуль с параметрами, если его запускаете только вы, ваш босс и скомпиленное клиентское приложение али джоб, а у рядового злоумышленника возможности запусить код руками в принципе нет...
Сегодня только вы, завтра только ваш босс, послезавтра прикрутили на сайт. Хреновая аргументация, чтобы не оборачивать имена объектов в quotename, и не использовать sp_executesql для передачи параметров.
...
Рейтинг: 0 / 0
сложная процедура
    #38313186
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileДа с чего вы вообще взяли что есть принципиальная овзможность вызывать такого рода процки простым пользователям?

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

Или будете?Холивар...
Я просто к тому, что особой разницы между 'code '+@param+' code' и использованием параметров - на стадии разработки нет:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE PROCEDURE addWeight
   @weight INT,
   @name VARCHAR(40),
   @column VARCHAR(40)
AS
declare @sql varchar(max)='
   INSERT INTO TWeight(time, file_id)
   VALUES (@weight, (SELECT TOP 1 @column FROM @name ORDER BY @column DESC));'
exec sp_executesql 
   @sql, N'
   @weight INT,
   @name VARCHAR(40),
   @column VARCHAR(40)',
   @weight, @name, @column
...
Рейтинг: 0 / 0
сложная процедура
    #38313187
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальная аргументация, потому, что на сайт будут крутить имея в виду именно то, что крутится на сайте. Ниразу не видел чтобы на сайт прикручивали нутрянку, всегда делаются "интерфейсы" которые посылают на сервак "просьбы" что-то там посчтитать и вернуть.
...
Рейтинг: 0 / 0
сложная процедура
    #38313191
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileНормальная аргументация, потому, что на сайт будут крутить имея в виду именно то, что крутится на сайте. Ниразу не видел чтобы на сайт прикручивали нутрянку, всегда делаются "интерфейсы" которые посылают на сервак "просьбы" что-то там посчтитать и вернуть.Любой символьный параметр, который будет передан в команду exec напрямую - хоть через 1 интерфейс, хоть через тыщу - будет приводить к injection, и все только потому, что автор сего кода когда-то посчитал, что его код никто использовать не будет.
...
Рейтинг: 0 / 0
сложная процедура
    #38313215
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сразу масса догадок и предположений появляется:
1. У юзера не будет прав
2. запускать будет только ограниченный круг лиц
3. это не прикрутят на сайт/в продакшн


как показывает практика, в тех случаях когда код пишут исходя из этих допущений - всё происходит с точностью до наоборот
...
Рейтинг: 0 / 0
сложная процедура
    #38313216
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм... а не работает мой пример...
не получается имя таблицы передать через параметр как varchar, требуется @tablename TABLE...
а просто exec() - без проблем...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
--CREATE PROCEDURE addWeight
declare
   @weight INT,
   @name VARCHAR(40),
   @column VARCHAR(40)
--AS
select @weight=0, @name='myTable', @column='myColumn'

declare @sql nvarchar(max)=N'select * from (VALUES (@weight, (SELECT TOP 1 @column FROM @name ORDER BY @column DESC)))v(a,b);'
declare @run nvarchar(max)=replace(replace(replace(@sql,'@weight', @weight),'@column',@column),'@name',@name)

exec(@run)
-- OK

exec sp_executesql 
   @sql, N'
   @weight INT,
   @name VARCHAR(40),
   @column VARCHAR(40)',
   @weight=@weight, @name=@name, @column=@column
-- Error 1087: Must declare the table variable "@name".

...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / сложная процедура
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]