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

文章介绍了如何使用ApachePDFBox生成包含JavaScript的PDF文件,以及如何在浏览器中检测并防止XSS攻击。作者提供了一个方法来检查PDF文档是否包含会立即执行的JS脚本。

一、引入pdfbox依赖

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>3.0.0</version>
</dependency>

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

//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脚本

/**
 * 校验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;
}

本文到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值