| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2877 人关注过本帖
标题:ASP.NET2.0如何设置IIS下的某文件夹里面的文件不让局域网内的用户直接通过U ...
只看楼主 加入收藏
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
结帖率:100%
收藏
 问题点数:0 回复次数:9 
ASP.NET2.0如何设置IIS下的某文件夹里面的文件不让局域网内的用户直接通过URL访问?
近段时间在学习开发一个小程序,是将合同扫描文件从客户端上传到服务器的,然后指定用户才可进入网页进行文件的下载。
今天发现一个问题:放置在IIS下默认网站内的文件夹内的word文件,是可以通过
“http://localhost//UploadedFiles/
***/***/***/***.doc”进行文件下载,而无需打开登录网页通过认证才可下载文件。如果用户知道文件的放置路径或者用户刻意去“撞”文件的路径,岂不是什么机密文件都被他下载走了???如何解决这个问题啊???

[此贴子已经被作者于2007-4-20 15:04:47编辑过]

搜索更多相关主题的帖子: IIS 文件夹 局域网 服务器 ASP 
2007-04-18 09:33
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
收藏
得分:0 
在客户端将文件上传到服务器IIS文件夹以外的地方保存,但这样一来,又不能下载了。大家是如何解决这个问题啊?

我是2.0超级菜鸟,请多多教导!
2007-04-19 08:18
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 

把路径和文件名起的没人能猜到就可以了


本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2007-04-19 09:03
fququ
Rank: 1
等 级:新手上路
威 望:1
帖 子:181
专家分:0
注 册:2004-5-30
收藏
得分:0 
装ftp-server 可以解决.程序只需要按照客户名往各各ftp目录里存放就好.不给ftp user开放写,只开放读就可以.

2007-04-19 09:04
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
收藏
得分:0 
装ftp-server ?要不要每个客户端的电脑都要装相应的软件的啊??

我是2.0超级菜鸟,请多多教导!
2007-04-19 10:58
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
收藏
得分:0 
这个算不算防盗键???大家是如何解决这个问题的?

我是2.0超级菜鸟,请多多教导!
2007-04-19 16:19
skyland84
Rank: 2
等 级:新手上路
威 望:4
帖 子:544
专家分:0
注 册:2006-10-9
收藏
得分:0 

我记得可以把IIS 设置成不允许跨页面访问的!

当你设置好后!

你在处理一个页面(下载页面)
之后在这个页面中判断这个用户是否可以下载!

如果可以!
就 重定向到 要下载的资料!

这样行不?


决定人生~
2007-04-19 16:25
fququ
Rank: 1
等 级:新手上路
威 望:1
帖 子:181
专家分:0
注 册:2004-5-30
收藏
得分:0 

楼上的方法可能对迅雷等的下载工具软件不起做用.
查看当前连接如果包涵主域名可以自动跳转到主域名试下可行否.


2007-04-20 01:33
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
收藏
得分:0 

看了 清清月儿 的《ASP.NET2.0雷霆之怒盗链者的祝福》的文章,按照文中的教导想实现:局域网内设置IIS下的某文件夹不让用户直接通过URL访问,而是要通过身份验证进入主页后,才能下载文件。
以下是我根据文章的指导进行操作,但最后输入 http://localhost/showbaobiao\1.rar 一样可以下载文件,而不是像文章所说的会跳转到WebForm1.aspx,在WebForm1.aspx页面中按下“下载”按钮才可以输出rar文件,请大家帮忙看看哪里出错了,谢谢!
1、首先创建一个类库项目myhandler.cs,后台的代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// myhandler 的摘要说明
/// </summary>
public class myhandler:IHttpHandler
{
public myhandler()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region IHttpHandler 成员
public void ProcessRequest(HttpContext context)
{
// 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件
HttpResponse response = context.Response;
response.Redirect("http://192.168.1.11/showbaobiao/WebForm1.aspx");
}

public bool IsReusable
{
get
{
// TODO: 添加 MyHandler.IsReusable getter 实现
return true;
}
}
#endregion

}
2、 在配置文件Web.config文件节点里增加如下节点:
<httpHandlers>
<add verb="*" path="*.rar" type="myhandler,App_Code"/>
</httpHandlers>
3、在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件和后台的代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
FileInfo file = new System.IO.FileInfo(Server.MapPath("1.rar"));
Response.Clear();
Response.AddHeader("Content-Disposition", "filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
string fileExtension = file.Extension;
// 根据文件后缀指定文件的Mime类型

switch (fileExtension)
{
case "mp3":
Response.ContentType = "audio/mpeg3";
break;
case "mpeg":
Response.ContentType = "video/mpeg";
break;
case "jpg":
Response.ContentType = "image/jpeg";
break;
case "bmp":
Response.ContentType = "image/bmp";
break;
case "gif":
Response.ContentType = "image/gif";
break;
case "doc":
Response.ContentType = "application/msword";
break;
case "css":
Response.ContentType = "text/css";
break;
default:
Response.ContentType = "application/octet-stream";
break;
}
Response.WriteFile(file.FullName);
Response.End();
}
}

4、 最后一步就是在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。
5、 在IE里输入http://localhost/shobaobiao/1.rar,会立即跳转到http://localhost/shobaobiao/WebForm1.aspx,然后按WebForm1.aspx的“下载”按钮就可以下载1.rar了。

但是,当我操作到第五步时,在IE里输入http://localhost/shobaobiao/1.rar 并按回车键后,并没有跳转到http://localhost/shobaobiao/WebForm1.aspx页面,如何解决这个问题啊,请大家支招,谢谢!


我是2.0超级菜鸟,请多多教导!
2007-04-20 15:02
foshan
Rank: 1
等 级:新手上路
威 望:2
帖 子:605
专家分:0
注 册:2006-3-1
收藏
得分:0 
已解决。
但是,这样的设置,对于用 迅雷 来下载文件,是起不到任何阻止作用的。如何更好地解决这个问题啊??

我是2.0超级菜鸟,请多多教导!
2007-04-23 16:50
快速回复:ASP.NET2.0如何设置IIS下的某文件夹里面的文件不让局域网内的用户直接 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020443 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved