繁体   English   中英

HTML5属性是否安全可靠?

[英]Is the HTML5 property contenteditable secure?

这个问题的所有答案都是陈旧的。 在2016年我找不到2016年以上的任何内容。 HTML5的contenteditable=true属性是否安全? 我没有看到它用得太多。 我有什么安全使用它?

编辑:从旧的答案,它看起来现在被广泛接受, http://caniuse.com/#search=contenteditable

编辑:当我说安全时,我的意思是如何确定输入其中的人是安全的? 我应该寻找什么样的问题? XSS? 别的什么?

编辑:我正在将编辑过的内容发送到服务器。 HTML5属性有什么不同,我不会对任何输入元素做什么?

它完全安全。 contenteditable属性是枚举属性,其关键字为空字符串,true和false。 空字符串和true关键字映射到true状态。 false关键字映射到false状态。 此外,还有第三个状态,即继承状态,它是缺省值缺省值(默认值无效)。

contenteditable="" or contenteditable="true"

表示该元素是可编辑的。

contenteditable="false"

表示该元素不可编辑。

contenteditable="inherit"

表示如果元素的直接父元素是可编辑的,则该元素是可编辑的。 这是默认值。

当您向元素添加contenteditable时,浏览器将使该元素可编辑。 此外,除非子元素明确满足=“false”,否则该元素的任何子元素也将变为可编辑。

我认为通过“安全”你的意思是,如果用户可能通过从Word或其他网页或聊天应用程序复制内容而意外触发XSS或类似内容。

这得看情况:

您可以在contenteditable iframe上使用sandbox="allow-same-origin"属性,这将阻止所有javascript在iframe内执行。

为了防止加载外部资源,您可以提供CSP,将资源限制到您的域或完全禁止外部资源。

但请记住: iframe中的CSP也会限制某些浏览器中的父网站,如果iframe与父网站的原点相同。 需要同源才能访问iframe的编辑内容。

然而,你可以使用放在一个不同的起源和只供由一个包含一个CSP的iframe contenteditable的是,如上所述是沙箱的iframe。 第一个iframe(包含沙箱)可以使用javascriptmessage passing与您的顶级页面/源进行通信。

据我所知,你不需要做服务器方面的特殊事情。 你可以用contenteditable做的一切都可以用普通的textarea完成。 使用HTML Purifier或基于白名单的类似过滤器。

对于初学者来说,并非所有浏览器都支持它。 其次,就安全性而言,它只是一个允许内容编辑的客户端属性。 例如:我可以直接从MY BROWSER删除网页上的所有内容和元素,只需打开控制台并在body标签中添加contenteditble="true ”即可。 现在......它不会损害您的网站,因为它不会影响服务器端。 这取决于你的用例。 你是如何考虑使用它的? 它无论如何都不会比表单输入更危险。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM