javascript - 使用“sanitize-html”npm 包清理 HTML 的问题
问题描述
根据文档,我尝试了以下代码
const dirty = '<div>Content</div>';
const clean = sanitizeHtml(dirty);
clean 的预期输出应该是“Content”,但这会返回“clean”,从带有 div 标签的脏中返回相同的值
解决方案
如果您打算将值重新插入到 innerHTML 中,可能是为了修改语句但确保用户不会在您的聊天框中插入 HTML?
let received_message ="<div>this should break chat boxes</div>";
let message = received_message.replace(/</g, '<').replace(/>/g, '>');
document.querySelector("#hacked").innerHTML += received_message;
document.querySelector("#nothacked").innerHTML += message;
<div id="hacked"></div>
<div id="nothacked"></div>
如果要担心这样的输入,这将剥离 < 和 > 并关闭 HTML 中的所有 HTML、Javascript 和其他形式的注入。
推荐阅读
- cuda - 使用 cuFFT 即时补零
- r - 如何在lubridate中表示当月的第15天
- concept - 并发进程会同时运行吗?
- javascript - 如何缩短表达式?
- ios - 'xcodebuild archive' 不会从复制文件构建阶段复制标头
- gitlab - 在 .gitlab.ci.yml 中并行运行作业
- python - ValueError:int() 的无效文字,基数为 10:'' 从 Python 2.X 到 3.X
- python - Flask 应用程序未加载(等待主机)
- postgresql - postgresql 11中的复制槽内存不足错误
- command-line-arguments - 如何将 raku -e 和 -n 与多个文件 glob 一起使用