【发布时间】:2019-12-15 08:23:31
【问题描述】:
所以我有一个简单的应用程序,用户可以在其中将 URL 插入 iframe 窗口。问题是这允许 html 注入,这会破坏显示。
有没有一种简单的方法可以防止这种情况发生?像正则表达式转义函数等?
iframe 窗口的 TS/JS 代码:
public renderPlot(): void {
let ht: string = '';
let url: string = this.configPBg[EConfigPKeys.IFrameAddress];
if (url == undefined || url.length === 0) {
this.renderWarningMessage('No valid address configured');
return;
}
// auto stream with url like this : https://www.youtube.com/embed/jdnhfg?&autoplay=1&mute=1
ht += '<iframe width="' + this.chartWindowSize.width + '" height="' + this.chartWindowSize.plotHeight + '" ';
ht += 'src="' + url + '" ';
ht += 'frameborder="0" ';
ht += '>';
ht += '</iframe>';
我尝试添加此内容,但未能捕捉到任何内容:
url.replace(/</g, "<").replace(/>/g, ">");
URL 输入表单如下所示:
【问题讨论】:
-
除了使用the sandbox attribute,您可能不想从字符串构建您的 iframe 内容,而是使用 DOM 操作函数,在其中创建一个
iframe元素,然后使用 DOM 为其分配内容尽可能多地构建功能和属性分配? -
检查 DOMPurify 库以清理元素 github.com/cure53/DOMPurify
标签: javascript html regex typescript code-injection