在以下情形中:
var evil_string = "...";
$('#mytextarea').val(evil_string);
在将它用作textarea
元素的值之前,是否必须转义不受信任的字符串?
据我所知,如果我想稍后对它进行任何操作,我将不得不小心处理字符串,但这是将字符串放入textarea而不会逃避固有危险的行为吗?
我做了一些基本测试,通常的特殊字符&'"<
似乎成功地添加到textarea而没有解释。
答案 0 :(得分:1)
不,你不需要这样做。当你直接赋予DOM元素的属性(jQuery的.val
在幕后做)时,数据被逐字解释。您只需要使用明确将输入视为HTML的方法引用文本 - 即outer/innerHTML
等。
答案 1 :(得分:0)
将非转义字符串作为文本框或textareas的值放置很好。当您在HTML中放入可能被解释为其他HTML的字符串时,您只需要担心它。一般来说,这意味着当文本可能是某些HTML DOM元素的子元素时,您应该转义字符串。这可以在服务器上完成(如lolka_bolka建议),或者在将潜在危险的字符串添加到DOM之前在客户端上完成。