Как правильно кодировать значение атрибута onClick для элемента HTML? - PullRequest
0 голосов
/ 03 июня 2011

У меня есть элемент HTML на странице ASP .NET, который выглядит примерно так:

<input type="button" onclick="<%=GetOnClick(param1) %>" />

Функция GetOnClick выглядит следующим образом:

Function GetOnClick(param1 As String) As String

  Dim onClick As String

  onClick = "foo(" & JavaScriptEncode(param1) & ");"

  Return HtmlAttributeEncode(onClick)

End Function

Я думаю, мне нужноJavaScriptEncode (в виде строки - этот метод добавляет одинарные кавычки) переменную param1, затем HtmlAttributeEncode целиком, так как я устанавливаю ее для атрибута onClick.Я уверен, что мог бы избежать использования всей этой кодировки в 90% случаев, но разве это лучшая практика?

Редактировать:

Брайан воспитал хорошийточка.Если вы можете контролировать строку param1, вам не нужно ее кодировать.Однако в данном случае это пользовательский ввод, поэтому мне нужно быть очень осторожным с ним.

1 Ответ

0 голосов
/ 03 июня 2011

Ответ зависит от нескольких вещей, о которых мы не знаем ... откуда поступает param1? А что ожидает foo ()?

Вам даже не нужен JavaScriptEncode, если вы управляете тем, что param1 содержит в бэкэнде. Если это происходит от какого-то пользовательского ввода, то, конечно, вам нужно его очистить или закодировать. Но вам также не нужно кодировать его дважды.

...