Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个HTML标记的内容不能包含JavaScript?_Html_Browser_Xss - Fatal编程技术网

是否有一个HTML标记的内容不能包含JavaScript?

是否有一个HTML标记的内容不能包含JavaScript?,html,browser,xss,Html,Browser,Xss,这里有一个愚蠢的问题,答案可能是“不”,但问也没什么坏处 我需要将格式化文本作为HTML标记接收,然后发出HTML以显示格式化文本。这是一种非常常见的情况。即使StackOverflow也必须处理它。(如果你认为降价本质上对XSS是安全的,谷歌“降价XSS”。)在谷歌搜索了很多次之后,我很清楚,白名单和黑名单HTML清理程序都有它们的问题,其中最重要的一点是聪明的坏人似乎总能找到绕过它们的方法 现在,很明显,每个浏览器都知道如何解析HTML和执行JavaScript(或其他脚本语言)。XSS“消

这里有一个愚蠢的问题,答案可能是“不”,但问也没什么坏处

我需要将格式化文本作为HTML标记接收,然后发出HTML以显示格式化文本。这是一种非常常见的情况。即使StackOverflow也必须处理它。(如果你认为降价本质上对XSS是安全的,谷歌“降价XSS”。)在谷歌搜索了很多次之后,我很清楚,白名单和黑名单HTML清理程序都有它们的问题,其中最重要的一点是聪明的坏人似乎总能找到绕过它们的方法

现在,很明显,每个浏览器都知道如何解析HTML和执行JavaScript(或其他脚本语言)。XSS“消毒液规避”攻击依赖于使用创造性构造,这些构造不是大多数消毒液捕捉到的,而是被浏览器识别为要执行的JavaScript代码

因此,由于(希望经过净化的)用户提供的HTML(或用户提供的标记,转换为HTML)包含在我的网站中某个HTML元素的子元素中,因此显而易见的解决方案似乎是以某种方式告诉浏览器不要执行该元素子元素中包含的任何脚本代码


这可能吗?

我想说,这在当前的浏览器中是不可能的,而且我真的认为添加一个功能没有那么有用。假设我们在HTML6中创建了一个名为
的新元素,其思想是该元素中绝对没有执行javascript。我们假设它可以完美地工作,没有bug。因此,您可以在服务器端执行类似的操作

<safe>
   $content
</safe>

$content
其中,
$content
表示不受信任的内容。看起来不错,只是有一个问题。如果
$content
中有一个终止的
标记,该怎么办?所以,你可以说。。。简单!我们只需要编码
,我们就会很好。这基本上已经是XSS的现状了。如果您可以对
进行编码,则可以对
等进行编码

也许有一个很好的方法来实现这一点,但它似乎非常依赖于服务器端编码

虽然在降价过程中可能会不时出现bug,但使用定期更新的库进行降价比使用白名单来制定自己的解决方案要好。如果对StackOverflow、Reddit、GitHub、Jira等足够好。。。。对于你正在建造的东西来说,它可能已经足够好了

当然,一定要遵守规则