Cosas a tener en cuenta al desarrollar páginas web con ASP. Los amigos que utilizan ASP pueden consultar los pasos.
1. Nunca confíe en que la entrada del usuario tenga el tamaño adecuado o contenga los caracteres adecuados. Las aportaciones del usuario siempre deben validarse antes de utilizarlas para tomar decisiones. Su mejor opción es crear un componente COM+ al que pueda llamar desde una página ASP para validar la entrada del usuario. También puede utilizar el método Server.HTMLEncode, el método Server.URLEncode o uno de los ejemplos de código que se encuentran al final de esta página.
2. No cree la cadena de conexión de la base de datos en la página ASP concatenando la cadena ingresada por el usuario. Los usuarios malintencionados pueden obtener acceso a la base de datos insertando código en su entrada. Si está utilizando una base de datos SQL, utilice un procedimiento almacenado para crear la cadena de conexión de la base de datos.
3. No utilice el nombre de cuenta de administrador SQL predeterminado sa. Todos los que usan SQL saben que la cuenta sa existe. Cree otra cuenta de administración de SQL con una contraseña segura y elimine la cuenta sa.
4. Antes de almacenar las contraseñas de los usuarios del cliente, utilice un algoritmo hash, codificación base64 o utilice Server.HTMLEncode o Server.URLEncode para codificar estas contraseñas. También puede utilizar uno de los ejemplos de código que se encuentran en la parte inferior de esta página para verificar los caracteres del secreto del cliente.
5. No coloque nombres de cuentas administrativas ni contraseñas en scripts administrativos o páginas ASP.
6. No tome decisiones en su código basándose en encabezados de solicitud, ya que usuarios malintencionados pueden falsificar los datos del encabezado. Codifique siempre los datos de la solicitud antes de usarlos o verifique los caracteres que contiene usando el ejemplo de código a continuación.
7. No almacene datos de seguridad en cookies ni oculte campos de entrada en páginas web.
Utilice siempre Secure Sockets Layer (SSL) con aplicaciones basadas en sesiones para evitar el riesgo de enviar cookies de sesión sin cifrarlas. Si la cookie de sesión no está cifrada, un usuario malintencionado puede utilizar una cookie de sesión en una aplicación para obtener acceso a otra aplicación en el mismo proceso.
8. Al escribir aplicaciones, filtros u objetos COM+ ISAPI, tenga en cuenta los desbordamientos del búfer debido al tamaño de las variables y los datos. También tenga en cuenta los problemas de canonicalización que pueden resultar de la interpretación, como la interpretación de nombres de ruta absolutos como nombres de ruta relativos o URL.
9. Cuando una aplicación ASP que se ejecuta en un apartamento de un solo subproceso (STA) se cambia a un apartamento de múltiples subprocesos (MTA), el token de suplantación quedará obsoleto. Esto puede hacer que la aplicación se ejecute sin suplantación, lo que le permite ejecutarse efectivamente con la identidad del proceso que puede permitir el acceso a otros recursos. Si debe cambiar de modelo de subprocesos, desactive y desinstale la aplicación antes de realizar el cambio.
ejemplo de código
Este ejemplo de código contiene una función que elimina caracteres potencialmente dañinos de una cadena enviada a la función. En los dos ejemplos anteriores, especifique la página de códigos para garantizar la codificación correcta. El siguiente ejemplo utiliza Microsoft Visual Basic® Scripting Edition (VBScript):
<%@ IDIOMA=VBScript %> <% Respuesta.CodePage = 1252 Response.Write (Hola y RemoveBadCharacters (Request.Form (Nombre de usuario))) Response.Write(<BR>Esta es la razón por la que recibió un error:) Función Eliminar caracteres incorrectos (strTemp) expresión regular tenue Establecer expresión regular = Nueva expresión regular regEx.Patrón = [^/s/w] regEx.Global = Verdadero RemoveBadCharacters = regEx.Replace(strTemp,) Función final %> |
El siguiente ejemplo utiliza Microsoft JScript®:
<%@ IDIOMA=JScript %> <% Respuesta.CodePage = 1252; Response.Write(Hola, + RemoveBadCharacters(Request.Form(UserName))); Response.Write(<BR>Por eso recibió un error:); función RemoveBadCharacters(strTemp) { strTemp = strTemp.replace(/[^/s/w]/g,); devolver strTemp; } %> |