如何在 IIS 上限制/验证文件上传文件类型服务器端

2024-02-19

我想要一个文件类型白名单,用户有权上传到我的 IIS 服务器(我使用的是 IIS v7.5)。

我有什么选择?例如,为了将控制器中特定操作的文件大小限制为 5MB,我将此部分添加到我的 webconfig 中:

<location path="home/fileupload">
  <system.web>
    <!-- maxRequestLength is in kilobytes (KB) -->
    <httpRuntime maxRequestLength="5120" /> <!-- 5MB -->
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- maxAllowedContentLength is in bytes -->
        <requestLimits maxAllowedContentLength="5242880"/> <!-- 5MB -->
      </requestFiltering>
    </security>
  </system.webServer>
</location>

webconfig 中是否有选项可以设置允许的文件类型白名单?或者唯一的选择是在文件完全上传时验证代码中的文件类型?推荐的技术是什么?我如何确定 .docx、.pdf、.jpg 等文件确实如此?


由于您需要服务器端,因此您可以使用文件 mime 类型。

THIS https://stackoverflow.com/questions/58510/using-net-how-can-you-find-the-mime-type-of-a-file-based-on-the-file-signature帖子展示了如何根据文件内容(而不是扩展名)确定 MIME 类型。

如果您确实想将输入限制为特定文件扩展名,您可以简单地根据您想要接受的内容检查输入名称。如果通过了,您可以对我链接的帖子中的库进行外部参照,以确保用户不仅仅更改了您的文件扩展名。

这样做可以很好地确定该文件是您想要接受的文件!

编辑:根据迄今为止的评论...... 根据您所说的,您正在寻找的这种方法应该非常适合您。如果您只是想将其限制为您评论中列出的文件类型,我的建议是...对文件扩展名进行简单检查。如果有效,则将文件传递给urlmon.dll链接中列出。确保它不会作为无效类型返回......又名可执行文件/java/zip/等。如果它不是无效类型,那么您将非常确定它是一个安全文件!

最后,仔细阅读该帖子的评论,看起来像是urlmon.dll可能隐式支持您想要的所有文件类型,这将消除检查它不是可执行文件或类似性质的文件的需要,但您需要确认 doc/docx/xsl/xslx 确实返回有效的 mime 类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 IIS 上限制/验证文件上传文件类型服务器端 的相关文章

  • 我可以更改 FormsAuthentication cookie 名称吗?

    我可以更改 FormsAuthentication cookie 名称吗 如果是 如何 我遇到的问题是 当我在同一个域中部署两个 Web 应用程序时 当任何人登录时 第二个应用程序将自动注销 因为它们使用相同的身份验证 cookie 名称
  • 使用来自另一个 ASP.NET 应用程序的 DNN 身份验证和授权信息

    我有一个 ASP NET Web 应用程序 K 它有自己的基于 SimpleMembershipProvider 的身份验证和授权 现在我想建立一个具有应用程序 K 和 DNN 的网站 用户将登录到 DNN 应用程序 并且我在 DNN 应用
  • 我可以在没有 http 处理程序的情况下隐藏 ASP.NET 页面上的图像路径吗?

    我的网站结构中的目录下有许多静态图像 并且我不关心图像的热链接或复制保护 由于多种原因 我需要做的不是在网站上显示图像路径 或显示假路径 有什么方法可以在不求助于 http 处理程序或辅助 asp net 页面的情况下执行此操作吗 你可以使
  • 将 MVC 操作结果发送到打印机

    我有一个带有操作的控制器 SomeController ActionToBePrinted ActionToBePrinted 返回一个 html 视图 当按下按钮时 从普通的 mvc razor 视图调用此操作 当按下按钮时 我将如何将视
  • 将 Flash 文件上传与 JSF 集成

    我看到我们可以通过flash文件上传来上传多个文件 喜欢SWF上传 http code google com p swfupload or YUI上传器 http yuilibrary com yui docs uploader 是否可以将
  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • 未捕获的类型错误:未定义不是函数

    我收到消息Uncaught TypeError Undefined is not a function当我尝试调用家庭控制器中的方法时 也许关于我为什么收到此消息的建议 findIdpActivities function pernr ca
  • 如何获取 Html.Editorfor 的日期选择器

    在我的 MVC3 剃刀页面上 我有一个日期字段 Html EditorFor model gt model Member Dob 下面给出的是我试图获取出生日期字段的日期选择器的代码 Scripts jquery validate min
  • 通过 appcmd 在 DefaultAppPool 上将“加载用户配置文件”设置为 false

    有appcmd可以设置吗Load User Profile假上DefaultAppPool在 IIS7 上通过 appcmd 吗 我已经尝试过这个 systemroot system32 inetsrv appcmd set config
  • 如何强制网站的某些部分在 SSL 下浏览?

    我们网站上的某些部分或页面涉及敏感的用户或帐户信息 我想强制用户在 HTTPS 下浏览这些页面 而其他包含公共内容的页面应在 HTTP 下可用 我打算在 IIS 上安装 url Rewrite 模块并编写规则来实现此目的 我不知道如何在 w
  • 如何将整个 POST 数据转储到 ASP.NET 中的文件中

    我目前正在尝试将一个应用程序从 asp net 移植到 php 但是我遇到了困难 需要有人帮忙 我需要将通过 POST 收到的 aspx 中的所有数据转储到文件中 但我不知道如何执行此操作 有任何想法吗 您可以使用Request 对象的In
  • 上传文件 WCF Web API 端点

    有没有办法将文件上传到 WCF Web API 端点 如果是这样 我如何访问 Network Stream 来读取数据 很感谢任何形式的帮助 Thanks 假设您正在谈论客户端 一种方法是创建一个派生自 HttpContent 的 File
  • 从 ApiController 中的 json 序列化中排除属性

    我试图在 Web ApiControllers 中排除属性被序列化为 JSON 我已经验证了以下 2 个场景的工作原理 我已在我希望排除的属性中包含以下属性 System Web Script Serialization ScriptIgn
  • 如何在asp.net背后的代码中获取css样式

    我需要从 asp net c 中的代码后面获取 css 样式 在网上没有找到解决方案 是否可以直接从 styles css 文件获取它 还是需要解决方法 我在我的网络应用程序中使用主题 但我还需要进行一些服务器处理 并且我需要 ccs 文件
  • 新 ASP.NET MVC 3 站点的 Razor 与 Webforms 视图引擎

    剃刀更漂亮 而且是新的 因此很酷 Webforms 是我已经熟悉的东西 当然 我毫无疑问会去学习新东西 Razor 但我听说有两个令我担心的缺点 无法轻松重用现有的 Web 表单控件 在极少数情况下 我可能需要拖动一些东西 我会重申 罕见
  • MVC 3 布局页面、Razor 模板和 DropdownList

    我想在我的网站的所有页面上包含年份的下拉列表 我认为放置此逻辑的好地方是布局页面 layout cshtml 如果用户更改年份 我想更改我的年份会话 ModelBinder 也进行更改 这对于 ASP NET Web 表单来说很容易做到 但
  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 将错误消息添加到@Html.ValidationSummary

    我使用标准 MVC3 Razor 视图和不显眼的 Javascript 验证 使用 Html ValidationSummary将它们显示在表单顶部 如果标准验证 例如 Required 通过 然后我运行一些非常自定义的客户端验证 当用户点
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测

随机推荐