Delimitadores de valores

24/04/2008 - 10:47 por www.capelblog.com | Informe spam
Hola,

Mirando la ayuda veo que existe SET QUOTED_IDENTIFIER ON/OFF para
cambiar comillas simples por dobles en los delimitadores de valores de
una sentencia sql.

Me interesaría saber si hay alguna forma de poder cambiar esos
delimitadores por otro definido por mi.

Por ejemplo

UPDATE mitabla SET micampo= #mi valor entre 'almohadillas'#

o otro delimitador

UPDATE mitabla SET micampo = [mi valor entre 'corchetes']

En definitiva... quisiera evitar la posible 'inyección de código sql'
al haber la posiblidad de que en los valores hayan caracteres
delimitadores que haga que sqlserver interprete erróneamente la
sentencia.

Estoy mirando que hay un sp_configure que podría darme alguna pista al
respecto... pero no se encontrar suficiente literatura al respecto.

Me interesa que la solución que se aplique sea válida para SQL Server
2000 en adelante.

Saludos y gracias por vuestra ayuda.
José Luis Capel

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
24/04/2008 - 14:58 | Informe spam
www.capelblog.com,

Esa no es la forma de evitar SQL dinamico. Para eso debes evitar generar
sentencias mediante la concatenacion de valores entrados por el usuario, sin
importar en que lado lo haces, en el lado del servidor o en el lado del
cliente. Trata de usar procedimientos almacenados que usen parametros y no
concatenes los valores pasados sino usales tal y como.


AMB

"www.capelblog.com" wrote:

Hola,

Mirando la ayuda veo que existe SET QUOTED_IDENTIFIER ON/OFF para
cambiar comillas simples por dobles en los delimitadores de valores de
una sentencia sql.

Me interesaría saber si hay alguna forma de poder cambiar esos
delimitadores por otro definido por mi.

Por ejemplo

UPDATE mitabla SET micampo= #mi valor entre 'almohadillas'#

o otro delimitador

UPDATE mitabla SET micampo = [mi valor entre 'corchetes']

En definitiva... quisiera evitar la posible 'inyección de código sql'
al haber la posiblidad de que en los valores hayan caracteres
delimitadores que haga que sqlserver interprete erróneamente la
sentencia.

Estoy mirando que hay un sp_configure que podría darme alguna pista al
respecto... pero no se encontrar suficiente literatura al respecto.

Me interesa que la solución que se aplique sea válida para SQL Server
2000 en adelante.

Saludos y gracias por vuestra ayuda.
José Luis Capel

Respuesta Responder a este mensaje
#2 José Luis Capel - Aicom
24/04/2008 - 16:06 | Informe spam
Alejandro,


Gracias por tu respuesta. Me aclara conceptos.

Esa no es la forma de evitar SQL dinamico. Para eso debes evitar generar
sentencias mediante la concatenacion de valores entrados por el usuario,
sin
importar en que lado lo haces, en el lado del servidor o en el lado del
cliente. Trata de usar procedimientos almacenados que usen parametros y no
concatenes los valores pasados sino usales tal y como.




¿Te refieres a procedimientos almacenados creados por mi mismo o a alguno
que ya pueda existir de forma 'estandar'?

Saludos y nuevamente gracias por tu ayuda.
José Luis Capel
Respuesta Responder a este mensaje
#3 Alejandro Mesa
24/04/2008 - 16:45 | Informe spam
José Luis Capel - Aicom,

Procedimientos almacenados creado por el desarrollador, de acuerdo a lo que
se necesite hacer, insert / update / delete / consulta.

The Curse and Blessings of Dynamic SQL
http://www.sommarskog.se/dynamic_sql.html

AMB


"José Luis Capel - Aicom" wrote:

Alejandro,


Gracias por tu respuesta. Me aclara conceptos.
>
> Esa no es la forma de evitar SQL dinamico. Para eso debes evitar generar
> sentencias mediante la concatenacion de valores entrados por el usuario,
> sin
> importar en que lado lo haces, en el lado del servidor o en el lado del
> cliente. Trata de usar procedimientos almacenados que usen parametros y no
> concatenes los valores pasados sino usales tal y como.
>

¿Te refieres a procedimientos almacenados creados por mi mismo o a alguno
que ya pueda existir de forma 'estandar'?

Saludos y nuevamente gracias por tu ayuda.
José Luis Capel



Respuesta Responder a este mensaje
#4 www.capelblog.com
24/04/2008 - 20:42 | Informe spam
Alejandro,

Gracias por tu ayuda.

Saludos,
José Luis Capel

On 24 abr, 16:45, Alejandro Mesa
wrote:
José Luis Capel - Aicom,

Procedimientos almacenados creado por el desarrollador, de acuerdo a lo que
se necesite hacer, insert / update / delete / consulta.

The Curse and Blessings of Dynamic SQLhttp://www.sommarskog.se/dynamic_sql.html

AMB

"José Luis Capel - Aicom" wrote:



> Alejandro,

> Gracias por tu respuesta.  Me aclara conceptos.

> > Esa no es la forma de evitar SQL dinamico. Para eso debes evitar generar
> > sentencias mediante la concatenacion de valores entrados por el usuario,
> > sin
> > importar en que lado lo haces, en el lado del servidor o en el lado del
> > cliente. Trata de usar procedimientos almacenados que usen parametros y no
> > concatenes los valores pasados sino usales tal y como.

> ¿Te refieres a procedimientos almacenados creados por mi mismo o a alguno
> que ya pueda existir de forma 'estandar'?

> Saludos y nuevamente gracias por tu ayuda.
> José Luis Capel- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#5 Jhonny Vargas P.
24/04/2008 - 22:42 | Informe spam
Con el uso de procedimientos almacenados y paso de parámetros perfectamente
evitas la inyección código SQL.. también va un tema del usuario que tenga
permisos solamente para ejecutar SP..



Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"www.capelblog.com" escribió en el mensaje de
noticias:
Hola,

Mirando la ayuda veo que existe SET QUOTED_IDENTIFIER ON/OFF para
cambiar comillas simples por dobles en los delimitadores de valores de
una sentencia sql.

Me interesaría saber si hay alguna forma de poder cambiar esos
delimitadores por otro definido por mi.

Por ejemplo

UPDATE mitabla SET micampo= #mi valor entre 'almohadillas'#

o otro delimitador

UPDATE mitabla SET micampo = [mi valor entre 'corchetes']

En definitiva... quisiera evitar la posible 'inyección de código sql'
al haber la posiblidad de que en los valores hayan caracteres
delimitadores que haga que sqlserver interprete erróneamente la
sentencia.

Estoy mirando que hay un sp_configure que podría darme alguna pista al
respecto... pero no se encontrar suficiente literatura al respecto.

Me interesa que la solución que se aplique sea válida para SQL Server
2000 en adelante.

Saludos y gracias por vuestra ayuda.
José Luis Capel
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida