清理从 CKEditor getData() 方法 [ckeditor] 收到的 HTML 数据
Sanitize HTML data received from CKEditor getData() method [ckeditor]
我想在使用 CKEDITOR.instances['textareaId'].getData();
功能时从 CKEditor 获取经过清理的数据。
我注意到 CKEditor 在内部清理了 'Source' 部分中提供的输入。
例子
- 如果输入是
<p onclick="alert('document.cookie')">Some Text</p>
,它将转换为 <p>Some Text</p>
。
- 但是当我尝试使用
CKEDITOR.instances['textareaId'].getData();
检索数据时,它 returns <p onclick="alert('document.cookie')">Some Text</p>
。
当调用 getData()
函数时,CKEditor 是否有任何方法清理数据?
从 CKEditor 的角度来看,不要禁用高级内容过滤器 (ACF) - 不要使用 config.allowedContent = true;
。这样不需要的 HTML 属性将被删除。
但是请注意 JavaScript,无论多么好,都可以随时禁用,因此 ACF 决不能被视为安全过滤器。如果您想清理 HTML,请为此使用服务器端库,而不是 JavaScript。使用服务器端应用程序代码清理用户输入是唯一正确的方法。
我想在使用 CKEDITOR.instances['textareaId'].getData();
功能时从 CKEditor 获取经过清理的数据。
我注意到 CKEditor 在内部清理了 'Source' 部分中提供的输入。
例子
- 如果输入是
<p onclick="alert('document.cookie')">Some Text</p>
,它将转换为<p>Some Text</p>
。 - 但是当我尝试使用
CKEDITOR.instances['textareaId'].getData();
检索数据时,它 returns<p onclick="alert('document.cookie')">Some Text</p>
。
当调用 getData()
函数时,CKEditor 是否有任何方法清理数据?
从 CKEditor 的角度来看,不要禁用高级内容过滤器 (ACF) - 不要使用 config.allowedContent = true;
。这样不需要的 HTML 属性将被删除。
但是请注意 JavaScript,无论多么好,都可以随时禁用,因此 ACF 决不能被视为安全过滤器。如果您想清理 HTML,请为此使用服务器端库,而不是 JavaScript。使用服务器端应用程序代码清理用户输入是唯一正确的方法。