Simile a this question ma non mi interessa molto di quali caratteri non causerà/non provocherà l'errore. Sono più curioso di sapere quale metodo posso chiamare, per verificare da solo, se la stringa corrente genererà il messaggio di errore sopra riportato.Come verificare se la stringa si attiva "È stato rilevato un valore Request.Form potenzialmente pericoloso ..." errore
Per dare un po 'di background, sto creando password casuali quando un utente dimentica le loro e ha bisogno di un reset. Sfortunatamente, il generatore di password casuale "accidentalmente" ne ha creato uno con lo &#
di recente. Ciò ha causato l'interruzione della pagina quando l'utente ha provato ad accedere con esso.
Come accennato in un sacco di posti intorno a questo argomento, ValidateRequest=false
(o <httpRuntime requestValidationMode="2.0" />
per NET 4.0) può essere utilizzato per disattivare .NET verifica di questi exploit, ma non vedo alcun motivo per perdere questo ulteriore livello di sicurezza quando sono io a creare la stringa in primo luogo. E semplicemente dire al generatore casuale di ri-randomizzare su un elenco incompleto (<
, &#
, ecc.) Non sembra la soluzione più pulita, quindi mi piacerebbe utilizzare lo stesso metodo di controllo utilizzato da .NET.
Microsoft spiega quali exploit sono in questione e cosa viene fatto per proteggersi da loro here.
This guy parla di trovare una funzione denominata IsDangerousString
dopo aver scavato con Reflector, ma non sono in grado di trovare questa funzione per usarlo. Inoltre si riferisce a .NET 1.1 e sto lavorando con .NET 3.5
Domanda interessante, ma non vedo un motivo per cui si dovrebbe includere tali personaggi oscuri. Probabilmente userò la classe RandomNumberGenerator per riempire un byte [] e quindi usare un codificatore z-base32 per codificare i byte in una stringa. – Shelakel
si conosce il carattere "exploit" che si desidera consentire perché non Html li codifichi prima della pubblicazione e poi li decodifichi HTML back – HatSoft
@Shelakel Certo, ci sono molti altri modi per generare password casuali. Purtroppo, tuttavia, siamo bloccati a dover soddisfare tutte le 4 regole dei 4 caratteri (lettere minuscole, maiuscole, numeri, caratteri speciali) con password per questo progetto. Ovviamente, potrei semplicemente rimuovere i caratteri "oscuri" che offendono, ma dal momento che le specifiche non sono molto chiare mi piacerebbe usare la stessa funzione che il sistema deve controllare. – Mercurybullet