在HTML元素上编码onClick属性值的正确方法是什么?

时间:2011-06-02 20:21:57

标签: javascript asp.net html-encode html

我在ASP .NET页面上有一个HTML元素,如下所示:

<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 :(得分:0)

答案取决于我们不知道的一些事情...... param1来自哪里?什么是foo()期待?

如果您正在控制后端包含的param1,那么您甚至不需要JavaScriptEncode。如果它来自某些用户输入,那么您当然需要清理它或对其进行编码。但是你不需要对它进行两次编码。