栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将大块HTML插入Java元素中的最佳实践?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将大块HTML插入Java元素中的最佳实践?

这是最佳做法吗?

不会。实际上,您有HTML注入问题导致错误,在最坏的情况下,注入的字符串可能包含用户提交的内容,因此XSS安全漏洞。

将纯文本内容和属性值放入HTML字符串时, 必须对其进行
HTML编码。在PHP中,您必须调用

htmlspecialchars()
进入HTML的字符串来执行此操作。在Javascript中,您没有内置的HTML转义功能,因此您必须自己编写。通过使用
s.replace(/&/g,'&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;')
进入HTML的字符串。

onclick =“ someFunc('{STRING} ');”

这是逃避混乱的全新境界。在事件处理程序属性内的Javascript字符串文字中,您必须对字符串进行JS编码(

-escaping
'
以及
一些Unipre字符以确保完整性) 
然后对结果进行HTML编码。否则,字符串可以突破其字符串字面定界符,并注入任意JS代码。在所有情况下都应避免使用内联事件处理程序属性,尤其是在模板中。

用HTML字符串创建页面内容很糟糕。您很可能会产生转义错误并损害应用程序的安全性。改用类似DOM的方法,您不必为此担心。您似乎正在使用jQuery,因此请尝试使用jQuery
1.4元素创建快捷方式:

$('<tr>').append(    $('<td>').append(        $('<a>', { href: o.link, text: o.word, onclick: function() {     someFunc(o.string); }        })    ));

或者,将空白行实际上保留为HTML文档,然后将其隐藏(

display: none
)或在启动时将其与文档分离(
removeChild
或jQuery
detach
)。然后,当需要新行时,克隆空白行并进行所需的更改:

var blankRow= $('#blankRow').detach();    ...var newRow= blankRow.clone();var link= newRow.find('td>a');link.attr('href': o.link);link.text(o.word);link.click(function() {    someFunc(o.string);});

如果必须从字符串模板创建内容,请确保默认情况下模板函数HTML会转义每个替换,并通过选择要解析的内容内的节点来附加事件

click(function() {... })
。或者使用事件委托(例如jQuery
live()
)来处理事件,而不必在添加时绑定到新节点。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号