Ho un input, che mostra un valore (Firstname) in una casella sulla pagina. Sul lato server, l'input è scappato seguendo la regola (vb.net):
Public Function UnescapeString(strValue As String) As String
If (String.IsNullOrEmpty(strValue)) Then Return strValue
strValue = Replace$(strValue, """", "")
strValue = Replace$(strValue, "'", "")
strValue = Replace$(strValue, "<", "")
strValue = Replace$(strValue, ">", "")
Return strValue
End Function
L'output non è stato convalidato affatto.
Non posso credere che sfuggire l'input da <>
potrebbe essere così sicuro come sembra per me!?
Ci sono trucchi per iniettare il codice o è la cosa più importante per prevenire XSS qui, per tagliare o sfuggire <>
segni?
Domanda 2: Sto pianificando una riscrittura di questo metodo in questo modo:
strValue = Replace$(strValue, """", """)
strValue = Replace$(strValue, "<", "<")
strValue = Replace$(strValue, ">", ">")
strValue = Replace$(strValue, "&", "&")
strValue = Replace$(strValue, "'", "'")
strValue = Replace$(strValue, "/", "/")
strValue = System.Web.HttpUtility.HtmlEncode(strValue) <- or only this
Sto pianificando di non tagliare, ma di eseguire correttamente i valori di escape, come nell'esempio sopra. Oppure uso solo% di% co_de di .NET (ultima riga), che codifica anche caratteri speciali come le dieresi tedesche, oltre a segni pericolosi come HtmlEncode
.