Gracias
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
| ||||
VENTAJAS: acceso mas rapido, mayor velocidad de respuesta, mejor manejo de la paqueteria ya que lo tienes todo ahi. DESVENTAJAS: se corrompoe la base de datos adios a todo el trabajo hasta el ultimo respaldo que tengas
__________________ Bien se puede recibir una puñalada sin adulación, pero rara vez se recibe una adulación sin puñalada ** *** |
| ||||
Cita: Son mas ventajas que desventajas... si ejecutamos sentencias sql estableciendo una conexion entre mi aplicación y la base por la naturaleza de la aplicación web se demorará más en relación si tan solo mandamos a ejecutar dichas sentencias en un procedimiento almacenado, sobre todo si son sentencias pesadas. Aunque tambien es verdad que la base de datos tiene mas importancia ya que existe programación dentro de ella pero se debe de tener una buena estrategia de respaldos de la misma, si ya tenemos una base de datos en producción se debe generar los script necesarios que contengan los CREATE PROCEDURE, TABLE, VIEW, FUNCTION, DATABASE, TRIGGER, USER... y todos los objetos de la base. De tal manera que si le pasa algo a la base su estructura está protegida.Utilizar procedimientos es beneficioso ya que dicho código ya está compilado en la base de datos y se ejecuta mucho mas rápido ![]() |
| ||||
No le conozco desventajas, a menos que seas adicto al SQL generado al vuelo desde el lenguaje (ASP, PHP, ...), en cuyo caso también serás adicto a las inyecciones de SQL o supervalidaciones desde la aplicación. Sobre perder los avances en caso de problemas... ¿que puedo decir...? ¿Que pasa si se corrompe la partición donde está el Web? Solo un buen esquema de respaldos te salvará en cualquiera de los dos casos.
__________________ Friedrich Nietzsche |
| |||
Cita: el SQL generado no necesariamente implica inyecciones de SQL, la mayoria de lenguajes -que se precien de serlo- ofrecen metodos para trabajar con parametros de forma segura. Ahora bien, tampoco el uso de procedimientos almacenados indica que no se pueda hacer sql injection (recuerda que tambien en los sp se puede generar "sql al vuelo")...por otro lado, el SQL generado es mas flexible para los O/RM, a diferencia de los procedimientos almacenados cada esquema tiene sus ventajas y desventajas, sobre este tema se ha escrito multitud de articulos o posts en blogs...te recomiendo la lectura de http://weblogs.asp.net/fbouma/archiv.../18/38178.aspx para que no desprecies tanto al sql generado ![]() |
| ||||
Cita: Cierto, gracias por clarificarlo.Ahora bien, tampoco el uso de procedimientos almacenados indica que no se pueda hacer sql injection (recuerda que tambien en los sp se puede generar "sql al vuelo")... Cita: Casi cualquier sentencia SQL de aplicación sera generada al vuelo (a menos que sea estática). Mientras que para que un SP sea vulnerable al injection necesitas usar SQL dinámico dentro del propio SP (mucho más difícil de encontrar, aunque yo mismo tengo un par de ellos) Disculpas... que es mas fácil, lograr hacer sql injection a una aplicación que cree las sentencias sql en su codigo o a una aplicación que llame a un store procedure
__________________ Friedrich Nietzsche |
| ||||
Algo así. Por ejemplo este SP caerá como mosquita mientras que el segundo no, además de que si revisas el código, para hacer sql dinámico dentro del SP requieres de más técnica que para hacerlo desde el propio lenguaje y requiere mucho más código que hacerlo de la manera habitual de los SP...
Código:
CREATE PROCEDURE hackeame( @flexibilizimo_filtro NVarChar(1000) = ' campo = 1000' )AS DECLARE @sql NVarChar(2000) SET @sql = 'SELECT * FROM tabla WHERE ' + @flexibilizimo_filtro EXEC (@sql)
Código:
CREATE PROCEDURE hackeame_v2( @flexibilizimo_filtro Int = 1000 )AS SELECT * FROM tabla WHERE campo = @flexibilizimo_filtro
__________________ Friedrich Nietzsche |