Tengo algunos campos de texto de respuesta libre y no estoy seguro de cómo eliminarlos para evitar la inyección de SQL. ¿Algunas ideas?Prevenir la inyección SQL en campos de texto de respuesta libre en ASP clásico
Respuesta
Cree un parameterized query en lugar de concatenar la entrada del usuario en la consulta.
Aquí es cómo hacer esto en ASP clásico: http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx
También es importante tener en cuenta que la única forma en que puede estar 100% seguro de inyección SQL es parametrizar cualquier instrucción SQL que utiliza la entrada del usuario, incluso una vez que está en la base de datos. Ejemplo: Supongamos que toma la entrada del usuario a través de una consulta parametrizada o un procedimiento almacenado. Estará a salvo en el inserto, sin embargo, debe asegurarse de que todo lo que se encuentre en el camino que use esa entrada también use un parámetro. La entrada del usuario directamente concatenada es una mala idea en cualquier lugar, incluso dentro de la base de datos.
Y si tiene que escribir ASP clásico, hágalo en JScript, ¡mucho mejor! Y, IIRC, se desempeña mejor también. – RedFilter
@OrbMan: ¿Cómo es eso relevante? JScript es más agradable si no te importa aislarte, sin embargo, la gran mayoría de ASP está en VBScript. Francamente, si tiene que usar ASP clásico, hágalo en VBScript, es mucho más fácil integrar ejemplos y será más fácil de leer para otros desarrolladores típicos de ASP. – AnthonyWJones
EDIT: Solo aclarar. Crear sql dinámico en una sp puede ser tan peligroso como hacerlo en la aplicación, pero vincular las entradas del usuario a una consulta lo protegerá contra la inyección sql, como se describe aquí (discusión específica de Oracle, pero el principio se aplica en otro lugar):
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:23863706595353
no es SQL dinámico que es el tema (todo el SQL es dinámico en Oracle realidad - incluso SQL estático en pro * c/plsql). Es "la construcción " de este sql que es el problema . Si un usuario le da entradas - , deben estar ENCUADERNADOS en la consulta - no concatenados. El segundo concatena la entrada del usuario en tu SQL - es como si les hubieras dado la posibilidad de pasar tu código y ejecutaras ese código. Simple y simple.
No lo creo Es un mito que los procedimientos almacenados protegen contra las vulnerabilidades de inyección de SQL. Es tan probable que genere una consulta SQL dinámica insegura en un procedimiento como en el código de la aplicación. –
No defiendo construir sql dinámico dentro de una sp, pero proporcionando las entradas de campo de texto como parámetros a una instrucción con parámetros dentro de la sp. – davek
- 1. Cómo retrasar una respuesta en ASP clásico
- 2. código de respuesta asp clásico
- 3. Inyección de ASP SQL clásica
- 4. Usar LINQ to SQL ayuda a prevenir la inyección SQL
- 5. Sesión en ASP clásico
- 6. Cadena multilínea en Asp clásico
- 7. Protección de inyección de ASP SQL clásica
- 8. VBScript/ASP clásico
- 9. Cookie.HTTPSólo en el clásico ASP
- 10. ResolveUrl/Url.Content en ASP clásico
- 11. Regrese conjunto de registros de la función en ASP clásico
- 12. concatenación de cadena en ASP clásico
- 13. Ejecución de ASP clásico en IIS 7.5
- 14. combinación de matriz en ASP clásico
- 15. Estructura de clase en asp clásico
- 16. ASP clásico: errores de captura
- 17. ¿Cómo prevenir la inyección SQL con nombres dinámicos de tablas?
- 18. ASP clásico - Detectando 500 errores
- 19. Prevención de la inyección SQL en Ibatis
- 20. Lectura de valores de web.config en ASP clásico
- 21. ASP clásico en ASP.NET MVC (C#)
- 22. 500 Vs 500.100 Error en ASP clásico
- 23. ASP clásico: ASPSESSIONID múltiple en cookies
- 24. Ordenar una colección en ASP clásico
- 25. ASP (Clásico) en Linux Chilisoft Reemplazo
- 26. ¿Cómo prevenir la inyección de SQL en la interfaz shell de línea de comandos de MySQL?
- 27. ¿Cómo atravieso una colección en ASP clásico?
- 28. Depuración con Response.Write en el clásico ASP
- 29. función sobrecargado en ASP clásico JScript
- 30. Consejos de rendimiento para asp clásico?
Habría encontrado la respuesta usted mismo si hubiera buscado en http://stackoverflow.com/questions/tagged/sqlinjection. –
@John te refieres a http://stackoverflow.com/questions/tagged/sql-injection+asp-classic y, sin embargo, uno de esos se marcó como duplicado. – cregox