我创建了一个污点来将脚本作为文本发送到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);