模拟pdf运行js脚本触发xss攻击及防攻击

一、引入pdfbox依赖

XML 复制代码
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>3.0.0</version>
</dependency>

二、生成一个带js脚本的pdf文件

java 复制代码
//Creating PDF document object
PDDocument document = new PDDocument();

//Creating a blank page
PDPage blankPage = new PDPage();

//Adding the blank page to the document
document.addPage(blankPage);

String javaScript = "app.alert('欢迎关注cms.centyun.com');";

//Creating PDActionJavaScript object
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);

//Embedding java script
document.getDocumentCatalog().setOpenAction(PDAjavascript);

//Saving the document
document.save("d:\\centyun.pdf");
System.out.println("PDF created");

//Closing the document
document.close();

三、在浏览器中打开pdf文件触发xss攻击

四、防止pdf的xss攻击

判断pdf文件中是否包含打开文档就运行的js脚本

java 复制代码
/**
 * 校验pdf文件是否包含打开文档就执行的js脚本
 **/
public static boolean containJavaScript(File file) {
    try {
        PDDocument document = Loader.loadPDF(file);
        PDDestinationOrAction openAction = document.getDocumentCatalog().getOpenAction();
        if (openAction != null) {
            String str = openAction.getCOSObject().toString().toLowerCase();
            return str.contains("javascript") || str.contains("cosname{js}");
        }
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }
    return false;
}

本文到此结束。

相关推荐
呆呆的小草1 小时前
Cesium距离测量、角度测量、面积测量
开发语言·前端·javascript
WHOAMI_老猫1 小时前
xss注入遇到转义,html编码绕过了解一哈
javascript·web安全·渗透测试·xss·漏洞原理
小前端大牛马2 小时前
react中hook和高阶组件的选型
前端·javascript·vue.js
刺客-Andy2 小时前
React第六十二节 Router中 createStaticRouter 的使用详解
前端·javascript·react.js
秋田君3 小时前
深入理解JavaScript设计模式之策略模式
javascript·设计模式·策略模式
菜鸡爱上编程5 小时前
React16,17,18,19更新对比
前端·javascript·reactjs·react
我命由我123455 小时前
VSCode - VSCode 转换英文字母的大小写
开发语言·javascript·ide·vscode·编辑器·html·软件工具
陈龙龙的陈龙龙6 小时前
uniapp 金额处理组件
前端·javascript·uni-app
我命由我123456 小时前
VSCode - VSCode 让未被编辑的标签页不被自动关闭
前端·javascript·ide·vscode·编辑器·html·js
layman05286 小时前
openeuler 虚拟机:Nginx 日志分析脚本
前端·javascript·nginx