繁体   English   中英

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

[英]What is the proper way to encode the value of an onClick attribute on an HTML element?

我在 ASP .NET 页面上有一个 HTML 元素,它看起来像这样:

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

GetOnClick function 看起来像这样:

Function GetOnClick(param1 As String) As String

  Dim onClick As String

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

  Return HtmlAttributeEncode(onClick)

End Function

我在想我需要对 param1 变量进行 JavaScriptEncode(作为字符串 - 此方法添加单引号),然后对整个内容进行 HtmlAttributeEncode,因为我将它设置在 onClick 属性上。 我确信我可以在 90% 的情况下不使用所有这些编码,但这是最佳实践吗?

编辑:

布莱恩提出了一个很好的观点。 如果您可以控制 param1 包含的字符串,则无需对其进行编码。 但是,在这种情况下,它是用户输入,所以我需要非常小心。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM