2009-04-07 41 views
12

Actualmente estoy tratando de proteger mi clásica aplicación ASP de XSS. Me encontré con el AntiXSS de Microsoft en la red y me preguntaba si esto funcionaría con una aplicación clásica.Anti XSS y Classic ASP

Si no, ¿tiene alguna idea de cómo puedo desinfectar las cuerdas?

Respuesta

13

para desinfectar las cuerdas me HTML codificar toda la salida, de esa manera usted no tiene que Dink alrededor con caracteres especiales o grandes expresiones de expresiones regulares

Server.HTMLEncode(string) 

Las dos medidas más importantes para prevenir los ataques de cross-site scripting son para:

  • Restringir entrada.
  • Encode output.

través How To: Prevent Cross-Site Scripting in ASP.NET (sé asp i'ts no clásico, pero hay principios similares)

+0

@Steoates: Esto, aquí, es generalmente una solución bastante decente. –

+0

Y si tiene que mostrar texto enriquecido (sistema heredado, suspiro), escribir una función de limpieza para usar múltiples expresiones regulares es, al menos, un paso en la dirección correcta. –

+0

Según OWASP, simplemente HTMLEncoding no es suficiente. Ver: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Why_Can.27t_I_Just_HTML_Entity_Encode_Untrusted_Data.3F – blischalk

0

No es fácil - necesitarías crear un contenedor COM-callable, instalarlo en los servidores, etc. Simplemente no creo que sea adecuado para el ASP "clásico".

1

Si usted tiene que permitir que ciertas etiquetas HTML (como lo hago en mi proyecto actual), puede utilizar una expresión regular para permitir sólo aquellas etiquetas y no otros, así:

set objRegExp = new RegExp 
with objRegExp 
    .Pattern = "<^((b)|(i)|(em)|(strong)|(br))>.*</.*>" 
    .IgnoreCase = varIgnoreCase 
    .Global = True 
end with 
cleanString = objRegExp.replace(originalString, "") 
0
<% 
Response.AddHeader "X-XSS-Protection", "1" 
%> 
Cuestiones relacionadas