首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在javascript中验证除扩展名之外的pdf文件?

在JavaScript中验证除扩展名之外的PDF文件,可以使用以下方法:

  1. 使用FileReader和Blob对象读取文件内容
代码语言:javascript
复制
const fileInput = document.getElementById('file-input');
fileInput.addEventListener('change', (event) => {
  const file = event.target.files[0];
  const reader = new FileReader();
  reader.onload = (e) => {
    const fileContent = e.target.result;
    if (isPDF(fileContent)) {
      console.log('这是一个PDF文件');
    } else {
      console.log('这不是一个PDF文件');
    }
  };
  reader.readAsArrayBuffer(file);
});
  1. 定义isPDF函数,用于检查文件内容是否为PDF格式
代码语言:javascript
复制
function isPDF(fileContent) {
  const pdfHeader = new Uint8Array([0x25, 0x50, 0x44, 0x46]);
  const fileContentBytes = new Uint8Array(fileContent);
  for (let i = 0; i < pdfHeader.length; i++) {
    if (pdfHeader[i] !== fileContentBytes[i]) {
      return false;
    }
  }
  return true;
}

这样,当用户选择一个文件时,我们可以通过FileReader和Blob对象读取文件内容,并使用isPDF函数检查文件内容是否为PDF格式。如果文件内容是PDF格式,则输出“这是一个PDF文件”,否则输出“这不是一个PDF文件”。

需要注意的是,这种方法只能检查文件内容是否为PDF格式,而不能检查文件扩展名。因此,如果需要同时检查文件扩展名,可以在读取文件内容之前进行扩展名检查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

文件上传限制绕过技巧

客户端验证绕过 这种类型绕过也非常简单,我们可以关闭浏览器上JavaScript或是浏览器发出请求之后,在被发送至服务器之前来篡改该HTTP请求即可。 示例: 1\.... 正如你所看到,此JavaScript仅在请求被实际发送至服务器之前处理你请求,以及检查你上传文件扩展名是否为(jpg,jpeg,bmp,gif,png)。...文件验证 顾名思义,就是文件被上传到服务端时候,对于文件扩展名进行检查,如果不合法,则拒绝这次上传。检查扩展名是否合法有两种常用策略,即黑名单和白名单策略。...黑名单策略,即文件扩展名黑名单为不合法。白名单策略,即文件扩展名不在白名单均为不合法。相对于黑名单,白名单策略更加安全。..."; 以上代码将会阻止jpg,jpeg,gif,png扩展名以外,所有其它文件类型上传。本例我们将尝试绕过该检查,并在Web服务器上传一个php文件。 黑名单绕过 ?

3.6K20

upload-labs大闯关

pass-1 解题思路:这里对上传文件扩展名进行验证,但是只在前端验证,服务端没有进行验证,因此伪造扩展名抓包然后再burp suite修改扩展名即可绕过前端验证。...还可以通过直接F12删除这段JavaScript代码(不刷新)或者禁用JavaScript来实现前端验证绕过。 首先上传一个shell.php <?...php phpinfo(); 前端alert一个弹窗,只能上传图片,可知是客户端JavaScript进行前端验证文件扩展名来过滤 要绕过前端过滤,只需要将shell.php后缀名改为jpg,然后上传...字段获取,因此可以通过burp suite修改content-type来绕过检测 首先将shell.php上传,显示文件类型不正确,这次对于文件类型验证服务端 服务端是通过什么来判断文件类型并进行过滤呢...除此之外,还可通过.空格.绕过 user.ini类似于php.ini,是php默认配置文件

35940

你应该学习正则表达式

以十六种语言编写出相同操作是一个有趣练习,但是,接下来本教程,我们将主要使用Javascript和Python(最后还有一点Bash),因为这些语言(在我看来)倾向于产生最清晰和更可读实现。...同样脚本Python是这样: ? 4 – 电子邮件验证 正则表达式也可用于输入验证。 ? 以上是一个(过于简单)Regex,用来匹配电子邮件地址。...^——输入开始 [^@\s]——匹配@和空格\s之外任何字符 +——1+次数 @——匹配’@'符号 [^@\s]+——匹配@和空格之外任何字符,1+次数 \.——匹配’.'字符。...此脚本输出应为 ? 注意——现实应用程序,使用Regex验证电子邮件地址对于许多情况,例如用户注册,是不够。...命令中正则表达式另一个好处是文本文件修改电子邮件。

5.3K20

ASP.NET Core应用针对静态文件请求处理: 以Web形式发布静态文件

虽然ASP.NET Core是一款“动态”Web服务端框架,但是很多情况下都需要处理针对静态文件请求,最为常见就是这对JavaScript脚本文件、CSS样式文件和图片文件请求。...我们可以看到默认作为WebRoot目录(wwwroot)下,我们将JavaScript脚本文件、CSS样式文件和图片文件存放到对应子目录(js、css和img)下,我们将把这个目录所有文件以Web...,对于存储“~/doc/”目录下这个PDF文件(“checklist.pdf”),发布Web上URL为“http://localhost:5000/documents/checklist.pdf...当我们浏览器上请求这个地址时,该PDF文件内容将会按照如下图所示形式显示浏览器上。 ?...(比如“http://localhost:5000/”或者“http://localhost:5000/img/”),目标目录内容(包括子目录和文件)将会以下图所示形式显示一个表格

1.3K50

WEB安全基础 - - -文件上传(文件上传绕过)

> 第二步,上传这个php文件,发现上传失败  第三步,关闭egdejs,步骤如下 找到设置  再cookie和网站数据关闭JavaScript  第四步,再次上传php文件  检查有无上传成功...PDF 文档 .pdf application/pdf 4. Microsoft Word 文件 .word application/msword 5....再次使用中国蚁剑连接,发现上传成功  绕过文件后缀检测-黑名单 黑名单: 扩展名黑名单为不合法,一般有个专门黑名单列表,里面会包含常见危险脚本文件。...实例 http://120.27.61.239:8003/source/04/index.php 绕过文件后缀检测-白名单 白名单: 文件扩展名不在白名单为不合法。...%00截断: url 发送到服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到不是 %00 字符,而 是 %00 解码后内容,即解码成了 0x00 。

3.6K20

使用 JavaScript 上传 PDF 和 Excel 等二进制文件到 ABAP 服务器并进行解析

, Form 里使用两个类型为 file input 标签,分别上传 PDF 和 Excel 文件: 用来测试本地 PDF 文件PDF.pdf,大小为 30129 字节。...现在已经有很多开源工具比如 JavaScript 库可以用来生成和解析 PDF 文件了,感兴趣朋友可以搜索引擎里搜索 Jerry 这几篇文章: 使用 ABAP 和 JavaScript 代码生成 PDF...文件几种方式 使用 JavaScript 将当前页面保存成 PDF,支持图片和文字保存 PDF 文件如何转成 markdown 格式 对于上传到 ABAP 服务器 PDF 文件文件名,我们仍然采取和前一篇文章同样方式解析...,从下图红色矩形框字符串中提取。...我们 ABAP 调试器里观察到,本地扩展名为 xlsx Excel 文件,上传到 ABAP 服务器时,其 content-type 为: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

1.5K10

ASP.NET特写

具体地说,简单Web页面以“.aspx”为扩展名,Web服务以“.asmx”为扩展名(来源于“Assembly”),一种称为PageletASP.NET页面可重用部件以“.aspc”为扩展名。...DNA,ASP页面可以同时使用JScript和VBScript;但ASP.NET不再允许这种用法。...ASP.NET,函数必须用HTML 标记包围,而且不允许把用于生成HTML代码函数分割成多个部分。...VB.NET,默认情况下参数以值(ByVal)传递,而在当前VBScript,参数默认以引用传递(ByRef)。最后,VB.NET将不再支持默认值或关键词Set、Let。...一般地,Web页面输入框使用客户端JavaScript进行输入合法性验证,但如果浏览器不支持JavaScript或者禁用了JavaScript,用户输入验证就会转到服务器端。

1.9K20

Linux 上无痛文件提取

从 Linux 系统存档中提取文件没有拔牙那么痛苦,但有时看起来更复杂。在这篇文章,我们将看看如何轻松地从 Linux 系统可能遇到几乎所有类型存档中提取文件。...本文中,我们将一系列提取命令组合成一个脚本,它会调用适当命令根据文档名提取文件内容。该脚本首先以一些命令来验证是否已经提供了一个文件名作为参数,或要求运行脚本的人提供文件名。 #!...如果未提供任何参数,脚本将提示输入文件名,如果存在则使用它。然后,它验证文件是否实际存在。如果不是,那么脚本退出。 下一步是使用 bash case 语句根据存档文件名称调用适当提取命令。...对于其中某些文件类型(例如 .bz2),也可以使用 tar 之外其它命令,但是对于每种文件命名约定,我们仅包含一个提取命令。...Z) uncompress $filename;; *) echo "No extract option for $filename" esac 如果提供给脚本文件扩展名与脚本已知扩展名都不匹配

1.4K20

Linux 上无痛文件提取 | Linux 中国

从 Linux 系统存档中提取文件没有拔牙那么痛苦,但有时看起来更复杂。在这篇文章,我们将看看如何轻松地从 Linux 系统可能遇到几乎所有类型存档中提取文件。...本文中,我们将一系列提取命令组合成一个脚本,它会调用适当命令根据文档名提取文件内容。该脚本首先以一些命令来验证是否已经提供了一个文件名作为参数,或要求运行脚本的人提供文件名。 #!...如果未提供任何参数,脚本将提示输入文件名,如果存在则使用它。然后,它验证文件是否实际存在。如果不是,那么脚本退出。 下一步是使用 bash case 语句根据存档文件名称调用适当提取命令。...对于其中某些文件类型(例如 .bz2),也可以使用 tar 之外其它命令,但是对于每种文件命名约定,我们仅包含一个提取命令。...Z) uncompress $filename;; *) echo "No extract option for $filename" esac 如果提供给脚本文件扩展名与脚本已知扩展名都不匹配

1.6K30

闲话文件上传漏洞

反制: 随便编辑一下页面/用burpsuite/写个小脚本就可以突破之,无须多言 2.检查扩展名 顾名思义,就是文件被上传到服务端时候,对于文件扩展名进行检查,如果不合法,则拒绝这次上传。...在这里,还有一点是值得一提检查扩展名是否合法时候,有两种策略 黑名单策略,文件扩展名黑名单为不合法,示例代码 $postfix = end(explode('.'...通过限制上传类型为只有我们接受类型,可以较好保证安全,因为黑名单我们可以使用各种方法来进行注入和突破 反制 一些 webserver ,存在解析漏洞 1.老版本IIS目录解析漏洞,如果网站目录中有一个.../.asp/目录,那么此目录下面的一切内容都会被当作asp脚本来解析 2.老板本IIS分号漏洞:IIS解析文件时候可能将分号后面的内容丢弃,那么我们可以在上传时候给后面加入分号内容来避免黑名单过滤.../form-data(POST提交时伴随文件上传表单) 4.分析文件头内容来检查文件类型 与方法2不同,还有一种检查类型方式是使用对于文件内容验证机制,这种方法利用是每一个特定类型文件都会有不太一样开头或者标志位

1.8K70

shell注入----通配符绕过

简介 前两天刚看到,记录一下。 shell注入:Shell注入是一种安全漏洞,攻击者通过命令行或脚本插入恶意代码来利用这个漏洞。...这通常发生在应用程序将用户提供输入直接传递给shell命令而未进行充分验证和转义时。 详解 和xss一样,waf也可以过滤shell注入。...例如: *.txt 匹配所有扩展名为.txt文件。 file* 匹配所有以 "file" 开头文件。 *file* 匹配所有包含 "file" 文件。 Bash 问号(?):匹配任意单个字符。...1-3].txt 匹配 "file1.txt"、"file2.txt" 和 "file3.txt" 之外文件。 Bash 花括号({}):扩展花括号内逗号分隔内容。...file{1..3}.txt 匹配 "file1.txt"、"file2.txt" 和 "file3.txt"(某些Shell,如bash)。

58630

上传验证绕过

‍ 0x01 客户端验证绕过(javascript 扩展名检测) 一般这种就是只是做了前端后缀格式限制。先把马改成能正常上传格式,开启抓包,上改了后缀马,抓包,改马后缀。放行。...或 help.asp_(下划线为空 格),这种命名方式 windows 系统里是不被允许,所以需要在 burp 之类里进行修改 ,然 后绕过验证后,会被 windows 系统自动去掉后面的点和空格。...双扩展名解析绕过攻击(1) - 基于 web 服务解析逻辑 如果上传一个文件名为 help.asp.123 首先扩展名 123 并没有扩展名 blacklist 里,然后扩展名 123 也没在 Apache...客户端端验证绕过(javascript 扩展名检测) 用反向代理工具(burp 之类)或禁用 js 便可以绕过客户端端验证 B 服务端验证绕过(http request 包检测) - Content-type...D 服务端验证绕过(文件完整性检测) - 文件头检测 文件开始伪装文件幻数 - 图像分辨率检测 文件开始伪装图像大小数据 - 文件加载检测 用工具对文件空白数据区或注释区进行代码注入绕过(图像仅能绕过渲染测试

1.4K30

你不知道 Blob

在数据库管理系统,将二进制数据存储为一个单一个体集合。Blob 通常是影像、声音或多媒体文件 JavaScript Blob 类型对象表示不可变类似文件对象原始数据。...MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型,是设定某种扩展名文件用一种应用程序来打开方式类型,当该扩展名文件被访问时候,浏览器会自动使用指定应用程序来打开...这种行为类似于 JavaScript 字符串:我们无法更改字符串字符,但可以创建新更正后字符串。...文档 PDF(便携式文件格式,Portable Document Format)是由 Adobe Systems 1993 年用于文件交换所发展出文件格式。...Blob 类型对象表示不可变类似文件对象原始数据。Blob 表示不一定是 JavaScript 原生格式数据。

4K20

CMU创建一个开源AI代码生成模型,C语言表现优于Codex

尽管大规模语言代码模型取得了巨大成功,但最强大模型并不是公开可用。这阻止了这些模型资源充足公司之外应用,并限制了资源匮乏机构该领域研究。...下图 1 展示了现有语言代码模型及它们大小和可用性, Codex 和 Austin'21 之外全部开源。 研究者还讨论了代码语言建模中使用三种流行预训练方法,具体如下图 2 所示。...1.6 亿、4 亿和 27 亿参数量 PolyCode 模型训练和验证损失曲线如下图 3 所示。可以看到,即使训练 15 万步之后,验证损失依然降低。...并且,仅与开源模型相比,PolyCoder C、JavaScript、Rust、Scala 和 TypeScript 表现优于类似规模 GPT-Neo 2.7B。...此外, C 语言之外其他 11 种语言,包括 PolyCoder 在内所有开源模型表现都弱于 Codex。

79030

CMU创建一个开源AI代码生成模型,C语言表现优于Codex

尽管大规模语言代码模型取得了巨大成功,但最强大模型并不是公开可用。这阻止了这些模型资源充足公司之外应用,并限制了资源匮乏机构该领域研究。...下图 1 展示了现有语言代码模型及它们大小和可用性, Codex 和 Austin'21 之外全部开源。 研究者还讨论了代码语言建模中使用三种流行预训练方法,具体如下图 2 所示。...1.6 亿、4 亿和 27 亿参数量 PolyCode 模型训练和验证损失曲线如下图 3 所示。可以看到,即使训练 15 万步之后,验证损失依然降低。...并且,仅与开源模型相比,PolyCoder C、JavaScript、Rust、Scala 和 TypeScript 表现优于类似规模 GPT-Neo 2.7B。...此外, C 语言之外其他 11 种语言,包括 PolyCoder 在内所有开源模型表现都弱于 Codex。 编辑:王菁

61740
领券