假设我有以下javascript,我将用户链接插入到图像中,然后将其放入div中。
<div id="divString"></div>
<script type="text/javascript">
var strUntrustedUserLink = '/path/to/image.jpg';
$('#divString').html('<img src="'+encodeURI(strUntrustedUserLink)+'">');
</script>
仅使用encodeURI()进行转义是否足够?或者我应该使用一个为属性转义的函数(它在Javascript中不能很好地存在,即我只读你必须自己创建)来进一步逃避它,如下所示:
<div id="divString"></div>
<script type="text/javascript">
var strUntrustedUserLink = '';
$('#divString').html('<img src="'+strSomeEscapeFunctionForAttributes(encodeURI(strUntrustedUserLink))+'">');
</script>
我认为encodeURI会逃避链接的一些危险字符,但不会考虑链接显示的上下文,即。回显的上下文可以是HTML或元素属性或CSS或......
编辑:发现变量错字,并添加了一些说明