gpt4 book ai didi

javascript 解除绑定(bind) dom 事件

转载 作者:行者123 更新时间:2023-12-01 02:35:24 25 4
gpt4 key购买 nike

我正在开发一个 Web 框架,并尝试在其中构建 XSS 预防功能。我已经将其设置为转义传入数据以存储在数据库中,但有时您想保存用户生成的 html。我正在尝试创建一个自定义标记来阻止任何 JavaScript 执行,这是我的第一个 hack:

<html>
<head>
<script type="text/javascript" src="/js/jquery.min.js"></script>
</head>
<body>

<preventjs>
<div id="user-content-area">
<!-- evil user content -->
<p onclick="alert('evil stuff');">I'm not evil, promise.</p>
<p onmouseover="alert('evil stuff');">Neither am I.</p>
<!-- end user content -->
</div>
</preventjs>

<script type="text/javascript">
// <preventjs> tags are supposed to prevent any javascript events
// but this does not unbined DOM events
$("preventjs").find("*").unbind();
</script>

</body>
</html>

我尝试使用 jQuery 来解除所有内容的绑定(bind),但它不会解除 DOM 中事件的绑定(bind),而这正是我想要做的。是否可以取消绑定(bind) DOM 元素的所有事件?

最佳答案

您的问题是,您这样做的目的是错误的 - 您应该在收到潜在敌意内容时过滤所有用户输入。

执行此操作时的第一条经验法则是“始终列入白名单,从不列入黑名单”。不要在用户生成的 HTML 中允许任何和所有属性,而只需保留允许的属性列表,并在收到 HTML 时删除所有其他属性(可能在客户端 - 肯定在服务器端。)

哦,HTML 并不是一种常规语言。对于此任务,您需要使用 HTML 解析器,而不是正则表达式。

关于javascript 解除绑定(bind) dom 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com