通过脚本动态插入图片时需要注意一个问题。
下面是用于在某个位置插入图片的代码:
有人可能会给他们的地方起名为:" onload="alert('hi')",标签将被呈现为:
下面是用于在某个位置插入图片的代码:
newPlace.find('.PlaceThumb').append('<img src="' + place.ThumbnailUrl + '" alt="' + place.Name + '" width="50px" style = "padding:2px;"/>');
有人可能会给他们的地方起名为:" onload="alert('hi')",标签将被呈现为:
<img src="/item.aspx?id=123" alt="" onload="alert('hi')" width="50px" style = "padding:2px;"/>
当图片加载完成后,脚本将会执行。
虽然只有 和 标签支持 onload 属性,但这也是一个好的教训,永远不要相信用户输入。
什么是“正确”的(美观、优雅、干净、通用)做法:
newPlace.find('.PlaceThumb').append('<img src="' + place.ThumbnailUrl + '" alt="' + place.Name.replace('"', '"') + '" width="50px" style = "padding:2px;"/>');
我在考虑,也许可以使用模板来定义一个操作符,使其能够对字符串进行UU编码——类似于C#中以@为前缀的字符串具有反斜杠方面的特殊含义。是否有一种方法可以将此功能添加到标准的.net字符串类中呢?