我正在开发一个 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 取消绑定所有内容,但它不会取消绑定 DOM 中的事件,这正是我想要做的。是否可以取消绑定 DOM 元素的所有事件?