【发布时间】:2019-09-18 05:22:18
【问题描述】:
这是一个愚蠢的问题,答案可能是“不”,但问起来也无妨……
我需要提取格式化文本作为 HTML 标记,然后发出 HTML 以显示格式化文本。这是一个非常常见的场景。甚至 StackOverflow 也必须处理它。 (如果你认为 markdown 本质上对 XSS 是安全的,谷歌“markdown xss”。)经过多次谷歌搜索,我很清楚白名单和黑名单 HTML 清理程序都有其问题,尤其是聪明的坏人总是看起来想办法绕过它们。
现在,显然,每个浏览器都知道如何解析 HTML 和执行 JavaScript(或其他脚本语言)。 XSS“规避消毒剂”攻击依赖于使用大多数消毒剂无法捕获但被浏览器识别为要执行的 JavaScript 代码的创造性构造。
因此,由于(希望经过净化)用户提供的 HTML(或用户提供的降价,转换为 HTML)包含在我的网站中作为某些 HTML 元素的 子,似乎显而易见的解决方案是以某种方式告诉浏览器不要执行该元素的子元素中包含的任何脚本代码。
这可能吗?
【问题讨论】: