如何防止执行自定义脚本污点

时间:2019-08-22 05:27:38

标签: quill

我创建了一个污点来将脚本作为文本发送到API,但是在粘贴脚本之后,脚本会在编辑器中自动执行。

例如,我粘贴了<script src = 'xyz.js' type='text/javascript'></script>,它下载了iframe和其他脚本。编辑器内容如下:

<script src = 'abc.js' type='text/javascript'></script>
<script src = 'xyz.js'></script>
<div><iframe>...</iframe></div>

如果我保存更改,则内容将保存在数据库中。可以阻止粘贴的脚本行的执行,仅发送<script src = 'xyz.js' type='text/javascript'></script>,而无需更改脚本类型或更改API

我的自定义污点:

import * as Quill from 'quill';

const embed = Quill.import('blots/block/embed');

export interface Format {
  blotName: string;
  tagName: string;
  className?: string;
}

class Script extends embed {
  static tagName: string;
  static blotName: string;
  static className: string;

  static create(value) {
    const node = super.create(value);
    node.setAttribute('src', value);
    return node;
  }

  static value(node) {
    return node.getAttribute('src');
  }
}

export function reqister(format: Format) {
  Script.blotName = format.blotName;
  Script.tagName = format.tagName;
  Script.className = format.className;
  return Quill.register('formats/script', Script, true);

0 个答案:

没有答案