2008-12-09 13 views
5

Necesito comprobar todo mi código asp para evitar la inyección de SQL.¿Se puede falsificar una sesión?

¿Debo verificar el objeto de la sesión también?

¿Cómo puede ser secuestrada una sesión?

Gracias!

+0

¿Por qué downvote esta pregunta? Además del error de gramática, creo que es una pregunta legítima. – Salamander2007

+0

Es probable que haya votado negativamente porque el texto de la pregunta carece de enfoque. El sujeto indica que quiere hablar de secuestro, pero el texto comienza a hablar sobre la inyección de SQL. – AnthonyWJones

Respuesta

3

La sesión se puede secuestrar. Si mal no recuerdo, Classic ASP solo admite el identificador de sesión basado en cookies. Si alguien fue capaz de robar esa cookie (wire-tap), entonces puede ganar la misma sesión que el usuario legítimo.

¿Debería marcar el objeto Session también? eso depende. Si puede asegurarse de que todo el objeto almacenado en las sesiones es "seguro" (la entrada se ha desinfectado), puede omitir el objeto de sesión. Si en alguna parte de su aplicación obtiene datos de una fuente insegura y los coloca en el objeto Session, entonces debe verificarlos también.

3

Para evitar la inyección de SQL, use consultas parametrizadas en lugar de crear las consultas SQL concatenando cadenas. El secuestro de la sesión es un tema completamente diferente. Puede ser más difícil al cambiar la cookie de sesión con cada solicitud, y evitarse por completo mediante el uso de HTTPS. Un problema relacionado (y más grande) es la falsificación de solicitudes entre sitios (búscalo).

1

Bueno, solo necesitas asegurar las entradas del usuario. Entonces, la pregunta que debe hacerse es: "¿Estos datos provienen de la entrada del usuario?" Si es así debes usar los parámetros sql.

En una escala mayor, y teniendo en cuenta que tiene métodos individuales & clases para realizar el acceso a datos, debe sql parámetros para cada parámetro de texto que proporcione a su sql. En este escenario, los parámetros sql no son realmente necesarios porque si recibe un número como parámetro de método no hay forma de que tenga una inyección SQL.

Sin embargo, en caso de duda utilice los parámetros sql.

1

Las variables de sesión se almacenan en la memoria en el servidor. Solo se almacena una identificación de cookie en el cliente. No hay necesidad de preocuparse por las variables en la sesión A MENOS que provengan del cliente. Muchas veces puede ser más fácil verificar todas las variables pasadas a la base de datos para inyección sql.

Cuestiones relacionadas