AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 14655
Accepted
Matias Nino
Matias Nino
Asked: 2009-05-30 06:52:42 +0800 CST2009-05-30 06:52:42 +0800 CST 2009-05-30 06:52:42 +0800 CST

ASP/ASP.NET 处理写权限的最佳方式?

  • 772

假设您在 IIS 上有一个公共 ASP.NET(或经典 ASP)应用程序,其脚本/页面需要在位于 Web 发布文件夹树中的特定文件夹中写入或更新文件。

1)设置它的正确方法是什么?

我主要关心的是我想让 ASP/ASP.NET 应用程序写入一个文件夹,但我不希望普通的 http 用户能够将文件放入其中。

permissions iis asp.net asp
  • 4 4 个回答
  • 24290 Views

4 个回答

  • Voted
  1. Best Answer
    Dominic D
    2009-06-03T22:38:42+08:002009-06-03T22:38:42+08:00

    首先让我说,我非常相信几乎总有比将内容写入磁盘更好的解决方案。无论是将数据写入数据库还是提供 Web 服务,写入磁盘应该是最后的选择。
    话虽如此,有一些正当的理由,但这有点棘手,并且取决于应用程序需要写出文件的原因。

    将数据写入代码运行位置之外是绝对要求。出于显而易见的原因,允许最终用户写入 ASPX/asp 引擎可以解释/执行代码的路径是不好的。

    影响这一点的其他一些事情是:

    1. 无论您是在域帐户下还是在标准网络服务下运行工作进程。重要的是要认识到,当您授予 IIS_WPG 组对文件夹的写访问权限时,在服务器上默认帐户下运行的任何 ASP.NET 应用程序都可以将文件写入该文件夹。在运行多个应用程序的服务器上,这是一个不太理想的配置,尤其是当应用程序不受信任和/或在 ISP/共享托管环境中运行时。
    2. 生成的文件是否需要在网络上可用。如果您的应用程序只是写出一些非 Web 可查看的文件,只需创建目录、授予权限并将应用程序配置为读/写到正确的位置即可。如果应用程序需要写出 Web 可查看文件(这在内容管理场景中很常见),您需要创建一个映射到您的可写目录的虚拟目录(没有执行代码/脚本权限)。
    3. 无论您是否在负载平衡/网络场环境中工作。如果您的应用程序在农场环境中运行并且出于某种原因需要将文件写入磁盘,那么您将面临一个全新的问题。您如何使 webserver1 上的用户生成文件与 webserver2 上生成的文件保持同步?通过一些复杂的同步脚本来做这件事充其量是痛苦的,并且充斥着种族/同步问题。实现这一点的最佳方法是在第三台服务器(理想情况下是具有一些冗余的集群)上创建一个共享并将数据存储在那里。如果您在域帐户下运行工作进程(安全最佳实践),您甚至可以映射到应用程序中的共享,而无需在代码或 web.config 中的任何位置使用用户/通行证(让审计/安全人员满意)。
    • 5
  2. Dscoduc
    2011-03-03T13:08:59+08:002011-03-03T13:08:59+08:00

    App_Data 文件夹

    为了提高 ASP.NET 应用程序使用的数据的安全性,为 ASP.NET 应用程序添加了一个名为 App_Data 的新子文件夹。存储在 App_Data 文件夹中的文件不会响应直接 HTTP 请求而返回,这使得 App_Data 文件夹成为与应用程序一起存储的数据的推荐位置,包括 .mdf(SQL Server Express Edition)、.mdb(Microsoft Access)或 XML文件。请注意,当使用 App_Data 文件夹存储您的应用程序数据时,您的应用程序的身份对 App_Data 文件夹具有读写权限。

    ASP.NET 数据访问中的新增功能

    • 2
  3. squillman
    2009-05-30T07:01:05+08:002009-05-30T07:01:05+08:00

    可能打赌看看stackoverflow.com ...

    最佳做法是将该文件夹放在文档根目录之外,并让您的应用程序从文件系统中读取。否则,将文件夹设置为只读,除 ASP[.NET] 用户外,并使用应用程序的内部授权控制写入权限。

    • 1
  4. harborsparrow
    2011-12-05T11:57:21+08:002011-12-05T11:57:21+08:00

    默认情况下,App_Data 可写但不可读。服务器似乎抵制任何改变这一点的尝试。因此,最好创建一个全新的文件夹并将其权限更改为 NOT EXECUTABLE 和 READABLE 和 WRITABLE。

    • 1

相关问题

  • 如何授予对 Exchange 2007 中每个人的日历的访问权限?

  • 这个 Web 服务器可以处理多少个站点?[复制]

  • 如何在 IIS 中发送响应标头?

  • IIS 优化

  • IIS 6.0 (Windows Server 2003) 备份的最佳实践?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve