Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Народ, хочу написать процедуру которая должна выбирать из писка записи, но сам список будет передаваться символьно сторокой типа '1,4,5' и т.д. не более 30 значений.
Можно ли как-то организовать в условии отбора WHERE чтобы в качестве списка вложить этот символьный параметр.


Что-то тпа этого:

CREATE PROCEDURE dbo.Orders_By_Centre @CentreList VARCHAR(100)

-- примерный параметр
-- SET @CentreList = '1,2,5,8'

select * from orders where service_centre in (@centreList)
Всем спасибо...
PS где читал про макроподстановки...
3 янв 14, 15:44    [15374580]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Valerii,


Все отбой, разобрался..


set @sql = 'select * from orders where branch in (' + @CentreList+')'
exec (@sql)
3 янв 14, 15:49    [15374591]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Glory
Member

Откуда:
Сообщений: 104751
set @CentreList = ' 1,2,5,8);delete from orders;(select ''i have bad news for you'''
set @sql = 'select * from orders where branch in (' + @CentreList+')'
print (@sql)
3 янв 14, 15:59    [15374606]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Valerii,

список надо передавать в виде заполненной табличной переменной
в аргументе соответствующего типа.
Чтобы внутри процедуры, а ещё лучше табличной инлайн функции
джойниться с ней и ничего не парсить.
3 янв 14, 16:03    [15374613]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
iap
Valerii,

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


Как раз этим и не хочу париться
там селект замороченный долго его перебирать придеьтся...
3 янв 14, 16:13    [15374622]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Glory
set @CentreList = ' 1,2,5,8);delete from orders;(select ''i have bad news for you'''
set @sql = 'select * from orders where branch in (' + @CentreList+')'
print (@sql)


Я понял, что речь идет про иньекции, но это будет исключено, параметр генериться из отобранных записей, и строиться строго в рамках '1,2,3,4,5.....'
любое другое игнорируется...
3 янв 14, 16:17    [15374626]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Valerii
но это будет исключено, параметр генериться из отобранных записей, и строиться строго в рамках '1,2,3,4,5.....'

А если я запущу процедуру просто в QA или даже в Excel ?
3 янв 14, 16:19    [15374630]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Glory,

Кроме этого параметра таме есть еще несколько параметров, это во-первых, во вторых я ее закриптую, это во-вторых,
в третьих доступ открыто к этой процедуре будет только через приложение...
Понятно что хак вссегда возможен, но врядли простым пользователям придет в голову что-то подставлять...
В самой процедуре можно парсить DELETE, TRUNCATE и тд.
изврат, но спасибо, конечно за такими вещами следить ужно. Вопрос, из экеселя не зная где сервак находиться как запустишь?
ведь сервак стоит даже не в переиметре заведения...
3 янв 14, 16:32    [15374646]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Valerii
Кроме этого параметра таме есть еще несколько параметров, это во-первых, во вторых я ее закриптую, это во-вторых,
в третьих доступ открыто к этой процедуре будет только через приложение...
Понятно что хак вссегда возможен, но врядли простым пользователям придет в голову что-то подставлять...
В самой процедуре можно парсить DELETE, TRUNCATE и тд

Мда. И это после слов "Как раз этим и не хочу париться там селект замороченный долго его перебирать придеьтся... " ? Время писать нормальный код нет, но всегда есть время написать "защиту" для говнокода...

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

Запущу так же, как это делает ваше приложение.
3 янв 14, 16:36    [15374652]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Valerii
Glory
set @CentreList = ' 1,2,5,8);delete from orders;(select ''i have bad news for you'''
set @sql = 'select * from orders where branch in (' + @CentreList+')'
print (@sql)


Я понял, что речь идет про иньекции, но это будет исключено, параметр генериться из отобранных записей, и строиться строго в рамках '1,2,3,4,5.....'
любое другое игнорируется...


Можно конечно и так попробовать
WHERE Centre IN (select id_centre from centres where marked = 1) где занчения указываются в таблице на сервере ...
Так скорее всего правильней.
3 янв 14, 16:37    [15374653]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Glory
Valerii
Кроме этого параметра таме есть еще несколько параметров, это во-первых, во вторых я ее закриптую, это во-вторых,
в третьих доступ открыто к этой процедуре будет только через приложение...
Понятно что хак вссегда возможен, но врядли простым пользователям придет в голову что-то подставлять...
В самой процедуре можно парсить DELETE, TRUNCATE и тд

Мда. И это после слов "Как раз этим и не хочу париться там селект замороченный долго его перебирать придеьтся... " ? Время писать нормальный код нет, но всегда есть время написать "защиту" для говнокода...

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

Запущу так же, как это делает ваше приложение.


Вот тут поподробнее?

Понятно что можно порты послушать куда какой-то подозрительный порт обращается, но для этого надо попасть на консоль, а она залочена и кроме кнопки пуск ничего нет. Тогда как?
3 янв 14, 16:41    [15374658]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Valerii
Вот тут поподробнее?

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

- Выберу созданный для вашего приложения DSN
- Спрошу у кого-нибудь имя сервера
3 янв 14, 16:44    [15374659]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Glory
Valerii
Вот тут поподробнее?

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

- Выберу созданный для вашего приложения DSN
- Спрошу у кого-нибудь имя сервера


Нет DSN....
Имя сервреа - зашифрованная строка, довольно нехилая...
Порт ни в коем случае не 1433...
Имя базы - неизвестно.
Имя пользователя и пароля тоже самое.
как решаем Вашу задачу? Нет, мне действительно интересно.. Просто постоянно слежу за вашими советами и многому учусь..
3 янв 14, 16:47    [15374661]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Valerii
Имя сервреа - зашифрованная строка, довольно нехилая...

Т.е имя сервера неизвестно никому в мире ?

Valerii
Имя базы - неизвестно.

база master есть всегда

Valerii
Имя пользователя и пароля тоже самое.

Откуда тогда они известны вашему приложению ?
3 янв 14, 16:54    [15374668]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Glory
Valerii
Имя сервреа - зашифрованная строка, довольно нехилая...

Т.е имя сервера неизвестно никому в мире ?

Valerii
Имя базы - неизвестно.

база master есть всегда

Valerii
Имя пользователя и пароля тоже самое.

Откуда тогда они известны вашему приложению ?


Сервер "где-то" жужит, то есть защита изначально на этом этапе.
Мда.... про master это да, но к ней еще достучаться надо, пароль sa - непростой, пользователь - тоже нечитабелен, ну про пароль тем более.
Сервер и пароли зашифрованы в ini файле, конечно тут хак возможен - место слабое, но к ini файлу еще доступ получить надо.
Ну вот примерно так..
Но то что тема очень актуальна , спасибо !!!!
Можно еще за пару советами подойти?
3 янв 14, 17:04    [15374684]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Valerii
Сервер "где-то" жужит, то есть защита изначально на этом этапе.

Если есть сервер, то есть люди, знающие его имя.

Valerii
Сервер и пароли зашифрованы в ini файле, конечно тут хак возможен - место слабое, но к ini файлу еще доступ получить надо.

Ну так а как можно запустить приложение, если не будет прав на его файлы ?

ЗЫ
Созданный вами код все равно фиговый. Даже без инджекшен. А ним вообще ужасный.
3 янв 14, 17:10    [15374689]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Glory
Valerii
Сервер "где-то" жужит, то есть защита изначально на этом этапе.

Если есть сервер, то есть люди, знающие его имя.

Valerii
Сервер и пароли зашифрованы в ini файле, конечно тут хак возможен - место слабое, но к ini файлу еще доступ получить надо.

Ну так а как можно запустить приложение, если не будет прав на его файлы ?

ЗЫ
Созданный вами код все равно фиговый. Даже без инджекшен. А ним вообще ужасный.


Этот код - читсо пример на то как решить данный вопрос.

"А ним вообще ужасный" ? это о чем?
3 янв 14, 17:32    [15374714]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Valerii
"А ним вообще ужасный" ? это о чем?

О "макроподстановке"
3 янв 14, 17:32    [15374716]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по макроподстановке  [new]
Valerii
Member

Откуда:
Сообщений: 749
Glory
Valerii
"А ним вообще ужасный" ? это о чем?

О "макроподстановке"

Знаю... и уже вижу. Хотелось побыстрей, но видимо не получится.
3 янв 14, 17:43    [15374729]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить