我在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包含,则不需要对其进行编码。但是,在这种情况下,它是用户输入,所以我需要非常小心。答案 0 :(得分:0)
答案取决于我们不知道的一些事情...... param1来自哪里?什么是foo()期待?
如果您正在控制后端包含的param1,那么您甚至不需要JavaScriptEncode。如果它来自某些用户输入,那么您当然需要清理它或对其进行编码。但是你不需要对它进行两次编码。