2009-04-07 23 views
12

Attualmente sto cercando di proteggere la mia classica applicazione ASP da XSS. Mi sono imbattuto in AntiXSS da Microsoft sulla rete e mi chiedevo se questo avrebbe funzionato con un'applicazione classica?Anti XSS e Classic ASP

Se no avete qualche idea su come potrei andare a disinfettare le corde?

risposta

13

per disinfettare le stringhe avrei HTML codificare tutti gli output, in questo modo non c'è bisogno di Dink in giro con caratteri speciali o enormi espressioni regex

Server.HTMLEncode(string) 

Le due più importanti contromisure per prevenire attacchi cross-site scripting sono a:

  • Ingresso di vincolo.
  • Uscita codifica.

via How To: Prevent Cross-Site Scripting in ASP.NET (so asp i'ts non classico ma ci sono presidi simili)

+0

@Steoates: questo, qui, è generalmente una soluzione abbastanza decente. –

+0

E se si deve visualizzare il rich text (sistema legacy, sigh), scrivere una funzione di pulizia per usare più espressioni regolari è almeno un passo nella giusta direzione. –

+0

Secondo OWASP semplicemente HTMLEncoding non è sufficiente. Vedere: 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

Non facilmente: è necessario creare un wrapper richiamabile tramite COM, installare sui server, ecc. Semplicemente non penso che sia adatto per ASP "classico".

1

Se si ha a permettere ad alcuni tag HTML (come faccio io nel mio progetto in corso), è possibile utilizzare un'espressione regolare per consentire solo quei tag e non altri, in questo modo:

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" 
%> 
Problemi correlati