Re: proof concept: do statement parametrization

Поиск
Список
Период
Сортировка
От Florian Pflug
Тема Re: proof concept: do statement parametrization
Дата
Msg-id 308EF99C-0A24-41ED-8E62-E9FD30C2BB32@phlo.org
обсуждение исходный текст
Ответ на Re: proof concept: do statement parametrization  (Pavel Stehule <pavel.stehule@gmail.com>)
Ответы Re: proof concept: do statement parametrization  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-hackers
On Jul4, 2010, at 13:57 , Pavel Stehule wrote:
>> I don't really buy that argument. By using a psql variable, you simply move the quoting & escaping business from SQL
tothe shell where psql is called. True, you avoid SQL injectiont, but in turn you make yourself vulnerable to shell
injection.
>
> can you show some example of shell injection? For me, this way via
> psql variables is the best. There are clean interface between outer
> and inner space. And I can call simply just psql scripts - without
> external bash.

Well, on the one hand you have (with your syntax)
echo "DO (a int := $VALUE) $$ ... $$" | psql
which allows sql injection if $VALUE isn't sanitized or quoted & escaped properly.

On the other hand you have
echo "DO (a int := :value) $$ ... $$$ | psql --variable value=$VALUE
which allows at least injection of additional arguments to psql if $VALUE contains spaces. You might try to avoid that
byencoding value=$VALUE in double quotes, but I doubt that it's 100% safe even then. 

The point is that interpolating the value into the command is always risky, independent from whether it's a shell
commandor an sql command. 

best regards,
Florian Pflug



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: proof concept: do statement parametrization
Следующее
От: Takahiro Itagaki
Дата:
Сообщение: Always truncate segments before unlink