首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server.MapPath问题?

Server.MapPath问题?
EN

Stack Overflow用户
提问于 2012-11-06 08:27:04
回答 2查看 1.3K关注 0票数 3

所以我正在读一本关于asp.net安全性的书。其中一个部分是:如何防止目录遍历文件名(黑客文件名)。

所以代码行是:

string fullPath = Server.MapPath(System.IO.Path.Combine(@"d:\inetpub\inbound\",filename));

但是,我注意到了合并的结果,这将是:

代码语言:javascript
复制
d:\inetpub\inbound\myfile.txt

但是我记得参数类型应该是虚拟路径,而不是文件系统路径!

d:\inetpub\inbound\myfile.txt不是虚拟路径!

我错过了什么?

附注:这本书是:(wrox)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 08:40:11

代码示例是错误的。

Server.MapPath的作用确实是将虚拟路径转换为物理路径。如果你已经有一条物理路径,那就不需要Server.MapPath了。

代码可能会抛出一个异常,其中包含以下消息:

“d:\inetpub\inbound\myfile.txt”是一条物理路径,但需要一个虚拟路径。

票数 2
EN

Stack Overflow用户

发布于 2012-11-06 08:30:22

您必须使用Server.MapPath将虚拟路径(即网站内的路径)转换为物理路径(例如D:\InetPub\.)。

所以你可以这么做:

代码语言:javascript
复制
var physicalPath = Server.MapPath("~/Incoming/Receivedfile.txt");

然后您可以使用physicalPath实际访问该文件。

顺便说一句,上面文件名中的倾斜表示代码正在运行的网站的根。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13247123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档