pdf导致的xss问题

今日做了个需求,需要将h5页面导出为pdf并作为附件分享,当时的设计方案为前端使用html2pdf进行转义,并调用上传接口保存,后续该文件可下载预览。

功能开发一切顺利,但是安全部门发现流程中的一些问题。

问题复现

可通过迅捷pdf编辑器,直接修改pdf,在文件中添加jscript相关代码,当浏览器直接打开时,将其识别为js并执行。

具体复现逻辑可参考过程

解决方案

  1. 后端识别pdf文件
    文件读取后,识别是否存在 /Js/JavaScript 等代码

    1
    return contains(file, "/JavaScript") || contains(file, "/JS")

    方案源自github

  2. 前端使用其他方式解析pdf
    使用pdf.js仍会触发该攻击,经过调研,可使用