`
ladymaidu
  • 浏览: 686570 次
文章分类
社区版块
存档分类
最新评论

从“为什么不能直接打开PDF文件”说到“脚本攻击”

 
阅读更多

先从一个简单的问题说起。

前两天在网上,有网友问我这样一个问题:“上载到SharePoint 2010文档库中的一个PDF文件,当直接点击此文件链接时,为什么浏览器弹出的对话框只有保存,而没有打开?”

image

就像上面的截图所显示的,在浏览器弹出的对话框上,只能让用户保存(Save)的选项,而没有一个打开(Open)的选项。但可能有人会记得,以前SharePoint 2007的时候,并不是这样的。用户直接点击一个存放在SharePoint 2007文档库里面的PDF文件时,浏览器会提示用户,可以直接打开它,然后本地安装的PDF Reader就会直接打开这个PDF文件,开始阅读。

先说解决这个问题的方法。打开SharePoint 2010管理中心,管理Web应用程序,选择一个Web应用程序,点击Ribbon区域的“常规设置”,然后在弹出的设置对话框中,将“浏览器文件处理程序”这个设置项从默认的“严格”,修改为“许可”。

image

搞定!你会发现修改了这个设置之后,浏览器会重新显示出“打开”选项,让用户可以直接打开PDF文件。

好了,如果你只是想解决这个问题,可以不用继续往下阅读了。

嗯,想知道为什么?好吧,这就是原因。重新将Web应用程序常规设置中的“浏览器文件处理程序”设置项改回默认的“严格”。打开文档库,这次在点击PDF文件链接之前,打开浏览器的Developer Tools(在IE浏览器中是通过F12打开它,下面将使用IE浏览器做例子,FireFox和Chrome也有各自的类似工具可以使用)。在“Network”选项卡中点击“Start capturing”按钮,它会捕获当前浏览器窗口与服务器之间的所有网络通信。然后,点击那个PDF文件链接。

image

在“Network”选项卡里面,找到用户点击PDF链接时所产生的网络请求,双击它,就可以看到这次请求的所有详细的Request和Response信息。点击“Response headers”选项卡,就可以看到从SharePoint 2010服务器所返回的HTTP头信息。嗯,如下图所示,你会看到一个有趣的头信息,“X-Download-Options = noopen”。

image

就是这个HTTP头信息,告诉浏览器:“不要直接打开这个文件,不要给用户显示出打开选项!”

当我们在SharePoint 2010管理中心里面,将Web应用程序的“浏览器文件处理程序”设置项从默认的“严格”修改为“许可”时,SharePoint 2010服务器就会停止在HTTP头里面添加这个头信息,于是,浏览器又会允许用户直接打开文件了。

SharePoint 2010默认会禁止浏览器直接打开所有存放在文档库中的任何文件,方法就是向返回给浏览器的HTTP头信息中添加那个额外的metadata。为什么当用户点击Office文档的时候,仍然会自动打开本地的Office程序,打开Office文档呢?这其实是因为页面上的脚本会调用OpenDocuments这个ActiveX控件,由它来启动客户端的Office程序,打开Office文档。

SharePoint 2010为什么这么做?原因就是为了更好的安全性。由于SharePoint通常会允许非网站管理员上载文件到文档库里面,所以让浏览器随便打开这些用户上载的文件,实际上是一件非常危险的事情。在最严重的情况下,这会给恶意用户提供实施脚本攻击的漏洞,甚至引发跨站点脚本攻击。比如,一个仅仅具备Contributor(参与讨论)角色的用户,可能会上载一个扩展名是.docx,但实际上确实一个含有恶意脚本的.html文件,到文档库中。当管理员尝试打开这个“Word文档”时,浏览器可能会尝试直接打开它,并无意中运行那个文件中所包含的脚本。

当然,除了禁止用户直接在浏览器中打开文档库中的文件之外,SharePoint 2010还在网站的安全性上做了其他一些增强。比如,Contributor现在不能直接上载一个页面文件到Pages(页面)库中,而只能通过Pages库内置的“创建页面”功能,来新建页面。又比如,通过在web.config的<SaveControl>节点中添加“SafeAgainstScript”和“RequiresDesignerPermission”属性,系统管理员可以禁止Contributor修改Web部件的属性。当然,这些又是另外一个话题了。

分享到:
评论

相关推荐

    通过Javascript注入实施的PDF攻击.pdf

    这种攻击方式可以通过将恶意脚本注入PDF文件中,使得用户在打开PDF文件时,恶意脚本将被执行,从而达到攻击的目的。这类攻击方式很隐蔽,因为恶意脚本可以藏匿在PDF文件中,难以被检测出来。 接下来,让我们来讨论...

    050-钓鱼攻击中文件的几种姿势.pdf

    本文档主要讲述了钓鱼攻击中文件的几种姿势,涉及到社交工程学、Office宏、CHM文档、漏洞利用等方面的知识点。 一、社交工程学 社交工程学是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱...

    可以使用的一款PDF阅读器

    PDF(Portable Document Format)阅读器是一款用于打开、查看和打印PDF文件的应用软件。PDF格式广泛应用于文档共享,因为它能够保留原始文档的格式和内容,无论在何种设备或操作系统上查看,都能保持一致。"可以使用...

    IIS安装与配置..pdf

    * 样本页面和脚本:这些样本中有些是专门为显示IIS的强大功能设计的,但同样可被用来从Internet上执行应用程序和浏览服务器,建议删除。 为IIS中的文件分类设置权限 除了在操作系统里为IIS的文件设置必要的权限外...

    2023 网络安全面试题(93道).pdf

    XSS攻击(跨站点脚本攻击)是一种攻击方式,攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作。防范XSS攻击的方法包括限制字符串输入的长度、对HTML进行转义处理、过滤输入的...

    JSP实现文件上传和下载

    本文将深入探讨如何使用JSP来实现文件的上传和下载功能,这对于构建交互性强的Web应用来说至关重要。 **一、文件上传** 文件上传通常涉及到客户端的表单提交和服务器端的数据处理。在JSP中,我们可以使用HTML的`...

    使用缺省浏览器打开指定网页

    因此,浏览器会遵循同源策略,限制了不同源之间的数据交互,以防止跨站脚本攻击(XSS)和其他恶意行为。 8. **浏览器内核与渲染**:不同的浏览器可能使用不同的渲染引擎,如Chrome使用Blink,Firefox使用Gecko,...

    ARP病毒攻击不断危害升级局域网该如何防范借鉴.pdf

    1. 网络恢复:可以通过在客户端执行批处理脚本或修改注册表来手动设置静态ARP条目,将网关IP地址与正确的MAC地址绑定,确保数据包能正确发送到网关。 2. 定位感染源:使用ping命令检查网关IP的ARP响应,对比MAC地址...

    CVE-2023-38831 WinRAR 远程代码执行漏洞 0Day PoC

    CVE-2023-38831 漏洞位于ZIP文件的处理过程,攻击者可以制作恶意.ZIP或.RAR压缩文件,其中包含无害文件(例如.jpg、.txt或PDF文件等)及恶意执行文件,并以无害文件名为文件夹命名。当用户点击并试图解压缩看似合法...

    PHP之安全编程.pdf

    如果打开了 register_globals,可以在您的 php.ini 文件中通过改变 register_globals 变量为 Off 关闭该功能。启用了全局变量的服务器会自动为全局变量赋任何形式的参数,这会给您留下安全问题。 三、使用预定义的...

    Secured Sumatra PDF 源代码

    2. 输入验证:为了防止恶意输入,开发人员可能加强了对用户打开PDF文件的验证机制,确保文件来源可靠,同时对文件内容进行过滤,阻止恶意脚本的执行。 3. 加密和解密:为了保护用户数据,可能引入了更强的加密算法...

    教你5个PHP安全措施.pdf

    开发者和管理员可以通过限制上传文件的类型和大小来防止恶意攻击。 三、使用安全的数据库连接 数据库连接是PHP应用程序的关键组件,恶意攻击者可能会通过数据库连接来攻击PHP应用程序。因此,使用安全的数据库连接...

    虚拟主机问题之linux的远程文件管理利器WinSCP归纳.pdf

    WinSCP是一款强大的、免费的开源文件传输工具,专为Windows用户设计,提供了安全的SFTP(SSH File Transfer Protocol)和SCP(Secure Copy)协议支持,用于在本地计算机与远程Linux服务器之间进行文件传输。...

    IE设置注册表对应表.pdf

    - “1409”允许启用或禁用XSS(跨站脚本攻击)过滤器,防止恶意脚本注入。 12. **剪贴板编程访问**、**脚本窗口提示**、**状态栏更新**: - 这些设置(如“1409”,“1407”,“2105”,“2103”)涉及脚本对系统...

    java文件上传、删除、下载的通用方法总结[归类].pdf

    使用`java.io.FileInputStream`打开文件,然后使用`java.io.BufferedInputStream`和`java.io.OutputStream`将文件内容流式传输到客户端。 3. **断点续传**: 对于大文件下载,可能需要支持断点续传,即记录客户端...

    恶意代码特征及其危害.pdf

    2.避免浏览不安全的网站,避免打开来自不安全来源的电子邮件和附件。 3.及时更新操作系统和软件的补丁,修复安全漏洞。 4.备份重要数据,避免数据损失。 5.提高网络安全意识,避免轻易地点击不安全的链接和下载不...

    php网络编程从入门到精通.rar

    3. PHP文件操作:网络编程往往涉及文件的读写操作,本教程会讲解如何在PHP中打开、读取、写入和关闭文件,以及文件上传下载的实现方法。 4. PHP表单处理:Web应用离不开用户交互,PHP处理表单数据是关键。教程将...

    网管教程 从入门到精通软件篇.txt

    如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart  创建和删除硬盘...

    SSH Secure安装使用说明.pdf

    SSH(Secure Shell)是一种网络协议,用于安全地远程登录到计算机系统,进行文件传输和执行命令。SSH Secure 是一个提供这种服务的软件工具,适用于互联网和计算机科学(cs)领域,确保用户的数据通信过程得到加密...

    HTML恶意代码的实验原理.pdf

    另一类是通过Java Script、Applet、ActiveX编辑的脚本程序修改用户操作系统,例如开机出现对话框、系统正常启动后,但IE被锁定网址自动调用打开、格式化硬盘锁定禁用注册表等。 为了防止网页恶意代码的攻击,需要...

Global site tag (gtag.js) - Google Analytics