HTML标记只能在代码中转义,而有些标记不能转义
How can HTML tags only be escaped in code and some tags not being escaped?
当使用某些在线文本编辑器(例如Stack Overflow上的文本编辑器本身)时,我们看到一些标记(如<b>
、<i>
等)是允许的,并且在指定的代码部分中,所有HTML标记都是转义的。
这怎么可能?我通过使用jQuery尝试过,我认为他们使用正则表达式,但我没有太多使用正则表达式的经验。
我通过jQuery AJAX和PHP脚本成功地完成了这些工作,其中的结果(使用htmlspecialchars()
转义,除了某些允许的标记)用jQuery的.html()
函数显示。然而,我发现它很容易受到XSS攻击。我也尝试过.text()
,但它转义了所有标签,包括我试图不转义的标签,AJAX加载也需要时间。
我该怎么做这样的事?
您可以使用tinymce作为编辑器,并在文本区域初始化该编辑器,初始化后可以使用
tinyMCE.init({
selector: "textarea",
valid_children : "+body[style],-body[div],p[strong|a|#text]"
});
通过这样做,您允许编辑器只使用某些html标记,其余的将被转义。
valid_childs使您能够控制哪些子元素可以存在于哪些父元素中。默认情况下,TinyMCE将删除/拆分任何非HTML过渡内容。例如,一个P不能是另一个P元素的子元素。
此选项的语法是一个逗号分隔的父级列表,其中包含应作为该元素的有效子级添加/删除的元素。例如"+body[style]"将添加style作为body的有效子项。
希望这将帮助您
相关文章:
- 不能从angular2中的子组件指定父组件中的数组
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 转义符不能与innerHTML一起使用
- JSON.parse没有'不能使用Javascript
- JS可以在Chrome中工作,但不能在Firefox中工作
- 砌体不能填补小缺口
- javascript扫雷器floodfill算法不能正常工作
- JavaScript指令不能像我想象的那样工作
- 为什么在这个网站上不能通过JS访问元素
- Facebook登录按钮没有'不能在Firefox上工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- AngularJS:$q.dedefe()不能由工厂方法共享
- 不能在同一页上进行多个jquery幻灯片切换
- 不能在图像中的地图标记中使用花式框jquery插件的区域标记
- HTML标记只能在代码中转义,而有些标记不能转义
- 由于转义序列,Javascript Replace不能工作
- 为什么我不能正确地附加具有指定id的标签?是字符转义问题吗?
- 不能在JSON对象POST中取消转义双引号