我在我的应用程序的一个文本区域中允许使用 HTML,现在将在客户端和服务器端验证中阻止某些 HTML 元素和属性。
我想知道允许锚<a>
标记是否明智。我真的需要我的用户能够输入锚点。然而,我正在思考一个坏人对锚标签的所有滥用。
这就是我想出的。
可以使用它执行外部脚本。对于.eg
<a href = " http://external/website/js/function ">虚拟文本</a>
流氓可以简单地从源域中执行我自己的一个 JS 函数。
<a href = "javascript::postMethodByMistakeDeclaredInGlobalScope();">Gotchya!</a>
<a href = "#" onclick = "myobj.myfunction()">虚拟文本</a>
当然,我可以通过确保所有内容都在适当的范围内来缓解 #2,但我只是担心尝试考虑可能发生的所有邪恶事情的好习惯,因此我可能会将它们合并到我的代码/设计中。
还有其他方法可以有人滥用锚标签吗?