CKEditor如何防范CSRF?ckCsrfToken机制及相关文档咨询
关于Double Submit Cookie策略的确认
没错,CKEditor 4.9.1及后续版本在文件上传场景中确实采用了Double Submit Cookie策略来防范CSRF攻击,这也是ckCsrfToken Cookie的核心用途。具体流程是:
- 服务器端生成CSRF令牌后,将其存入
ckCsrfTokenCookie中返回给客户端; - 当CKEditor发起文件上传请求(比如通过内置的上传组件或关联的CKFinder)时,前端JS会读取这个Cookie的值,并将它作为请求参数(或请求头)一并发送给服务器;
- 服务器收到请求后,会同时校验Cookie中的令牌和请求中携带的令牌是否一致,只有两者匹配时才会处理上传请求,以此拦截跨域伪造的上传请求。
非HTTP-only Cookie的原因
这个Cookie没有设置为HTTP-only,是因为CKEditor的前端JavaScript需要直接读取它的值,才能把令牌附加到上传请求里。如果设置为HTTP-only,浏览器会禁止JS访问该Cookie,导致CKEditor无法完成令牌的传递,CSRF防护机制也就失效了。
源码与参考依据
虽然CKEditor官方没有单独的CSRF防护专题文档,但你可以通过以下方式找到相关细节:
- 前端源码:在CKEditor的
uploadwidget插件源码中(路径:ckeditor/plugins/uploadwidget/plugin.js),可以找到读取ckCsrfTokenCookie并将其添加到上传请求参数中的逻辑; - 版本发行说明:CKEditor 4.9.1的发行说明明确提到「Added CSRF protection for file uploads」,这是该Cookie引入的官方说明;
- 配套工具文档:如果你搭配CKFinder使用CKEditor,CKFinder的相关文档中会有更详细的CSRF防护说明,因为两者的令牌机制是互通的。
内容的提问来源于stack exchange,提问作者Gyum Fox
相关产品推荐
相关产品推荐

