什么是在HTML元素上编码onClick属性值的正确方法?
问题描述:
我有一个看起来像这样一个ASP .NET页面上的HTML元素:什么是在HTML元素上编码onClick属性值的正确方法?
<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包含,你不需要编码它。但是,在这种情况下,它是用户输入,所以我需要非常小心。
答
答案取决于一些我们不知道的事情...... param1从哪里来? foo()期待什么?
如果您正在控制后端包含的param1,您甚至不需要JavaScriptEncode。如果它源自某些用户输入,那么当然你需要清理它或对它进行编码。但是你不需要编码两次。
它是用户输入。我编辑了这个问题来反映这个变化。 – 2011-07-19 13:00:53