Je construis une chaîne sur le serveur qui consiste à mettre dans une variable JavaScript sur le client.
Quel est le meilleur de l'encodage pour éviter tout problème P>
sur le serveur Je fais quelque chose comme ceci: P>
html = html.Replace("'", "'");
5 Réponses :
Vous êtes vraiment mieux en utilisant le Microsoft Anti-Cross Site Scripting Library pour faire cela. Ils fournissent une méthode JavascriptenCode qui fait ce que vous voulez:
Microsoft.Security.Application.AntiXss.JavaScriptEncode("My 'Quotes' and ""more"".", False)
N'oubliez pas de ne pas unescape sur le front-end si vous souhaitez l'utiliser pour une boîte d'alerte par exemple.
Je ne suis pas sûr dans quel contexte vous utilisez cette chaîne, mais Bien sûr, vous pouvez utiliser Quoi qu'il en soit, si vous bâtissez le code JavaScript: P> \ ' code> pourrait être ce que vous cherchez. La barre oblique intégrale est un caractère d'échappement et vous permet d'utiliser Personnages qui ne peuvent pas être présents dans un littéral à chaîne. C'est ce que la sortie JavaScript doit ressembler à:
alerte ("c'est incroyable"); code> dans ce cas particulier. P >
html = html.Replace("'", "\\'");
Les caractères que vous devez vous échapper dans une valeur de chaîne sont la barre oblique inverse et le caractère utilisé comme délimiteur de chaîne.
Si des apostrophes (') sont utilisés comme délimiteur de chaîne: P>
html = html.Replace(@"\", @"\\").Replace("'", @"\'").Replace(@"""", @"\""");
html = html.Replace("'", "%27");
J'ai constaté que la bibliothèque Antixsss n'était pas capable d'accomplir ce que je cherchais, qui devait encoder le côté serveur et décoder dans JavaScript.
à la place j'ai utilisé microsoft.jscript.dll, ce qui vous permet de: P > et du côté du client en JavaScript: p>