Problema de inyección SQL
Programa anti-inyección ASP universal. Elimina los riesgos de inyección SQL. Mejora la seguridad del sitio web.
Las solicitudes http generales no son más que obtener y publicar, siempre y cuando filtremos todas las publicaciones en el. archivo o La información de parámetros en la solicitud de obtención solo necesita caracteres ilegales, por lo que podemos determinar si está sujeto a un ataque de inyección SQL implementando el filtrado de información de solicitud http.
La solicitud de obtención pasada por IIS a asp.dll tiene la forma de una cadena. Cuando los datos se pasan a Request.QueryString, el analizador asp analizará la información de Request.QueryString y luego la basará. en "amp;", separe los datos en cada matriz, por lo que la interceptación de get es la siguiente:
Primero, definimos que los siguientes caracteres no se pueden incluir en la solicitud
'|y|exec|insert|select|delete|update |count|*||chr|mid|master|truncate|char|declare|xp_cmdshell
Cada carácter está separado por "|", y luego determinamos Request.QueryString
El código específico es el siguiente
Código de programa:
Dim sql_injdata
SQL_injdata = "'| y|exec|insertar|seleccionar|eliminar|actualizar|contar| *||chr|mid|master|truncate|char|declare|xp_cmdshell"
SQL_inj = split(SQL_Injdata, "|") p>
Si Request.QueryStringlt;gt;"" Entonces
Para cada SQL_Get en Request.QueryString
Para SQL_Data=0 a Ubound(SQL_inj)
Si InStr(Request.QueryString(SQL_Get), Sql_Inj( Sql_DATA))gt; 0 Entonces
Response.Write("lt;script language=""javascript"" type=""text/javascript ""gt; alert(""¡La información enviada contiene caracteres ilegales! "");lt;/scriptgt;")
Response.End()
End If
Siguiente
Siguiente
End If
De esta manera, hemos implementado la interceptación de inyección de solicitudes de obtención, pero también necesitamos filtrar las publicaciones. solicitudes, por lo que debemos continuar considerando request.form, que también es una matriz. El formulario existe, solo necesitamos hacer otro juicio de bucle.
El código es el siguiente
Código de programa:
Si Request.Formlt;gt;"" Entonces
Para cada SQL_Get en Request.Form
Para SQL_Data=0 a Ubound(SQL_inj)
Si InStr(Request.QueryString(SQL_Get), Sql_Inj(Sql_DATA))>0 Entonces
Response.Write("lt ;script language=""javascript"" type=""text/javascript""gt; alert(""¡La información enviada contiene caracteres ilegales!""); . End()
Finalizar si
Siguiente
Siguiente
Finalizar si
Obtener y interceptar publicación. Para solicitar información, solo necesita consultar esta página antes de abrir un archivo de base de datos como conn.asp.
Ejemplo:
Opción explícita
'//Se inicia la interceptación de inyección SQL
Dim SQL_injdata, SQL_inj, SQL_Get, SQL_Data
SQL_injdata = "'|y|exec|insertar|seleccionar|eliminar|actualizar|contar|*||chr|mid|master|truncate|char|declarar"
SQL_inj = Split(SQL_Injdata , "|")
If Request.QueryStringlt;gt;"" Entonces llame a KillSQLinj(Request.QueryString)'//obtener modo de intercepción
If Request.Formlt;gt;" "Luego llame a KillSQLinj(Request.Form)'//intercepción en modo de publicación
Sub KillSQLinj(fashion)
para cada SQL_Get In fashion
para SQL_Data=0 A Ubound(SQL_inj)
Si InStr(Request.QueryString(SQL_Get), Sql_Inj(Sql_DATA))>0 Entonces
Response.Write("lt;script language="" javascript "" type=""text/javascript""gt;alert(""¡La información enviada contiene caracteres ilegales!"");lt;/scriptgt;")
Response.End()
Finalizar si
Siguiente
Siguiente
End Sub
'// Finaliza la intercepción de inyección SQL
Si hay algún problema con el contenido de la respuesta, o si cree que es inapropiado, envíeme un mensaje de Baidu y agregue la URL de esta página al contenido del mensaje. .