急急急----------aspnet关于文件或目录访问权限的问题------高分在线等待啊

lhu 2004-08-30 07:41:03
我正在做一个网站的后台管理程序,涉及到图片的存放位置
原来的实现方式是这样的:
编辑文章后,将的文章的html源码存放在数据库中,文章中引用到的图片存放于服务器的磁盘中,但是这需要将存放图片目录的访问权限改为“可写”,且ntfs文件系统中目录安全选项卡中的iusr_*用户访问属性也得改为“可写”

问题1:
客户认为这样不安全,会给服务器带成威胁,怕有人别有用心攻击服务器。

请问这有这么严重吗?
当UploadFile到服务器上时,是以iusr_*访问磁盘的,对吧?能不能以别的windows账户来访问呢?比如administator

问题2:
于是,客户要求将文章中的所有图片存入到数据库中。
但是,这样的话,动态加载文章的时候又怎么能把图片还原到相应位置呢?
因为文章是html代码,代码里面不能有服务器端控件啊,这图片的显示就是难题了。
要解决这个问题,是不是一定得把图片放进数据库中呢?(要改的话,库结构和源码都很麻烦)

请高手给我提供思路,
万分感谢,分不够,再开贴加。
...全文
237 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangbuge 2004-08-31
  • 打赏
  • 举报
回复
厉害,这都知道!
lhu 2004-08-31
  • 打赏
  • 举报
回复
possible_Y大哥
可以留个QQ吗
lhu 2004-08-31
  • 打赏
  • 举报
回复
possible_Y
非常感谢你
你回答得很具体,也就是按客户的要求没有问题了.

但我现在又有一个难题:
html中的在线编辑器自带的插入图片功能不能用了,那我要在内容中插入图片该怎办呢?

我的思路是:
借助inputfile服务器端控件,在后台将图片存入数据库,返回id,然后编辑者在内容中修改源代码,将img标签的src改为指定id

请问还有没有更好的办法

我的
QQ: 365818050
msn: fairjob3@hotmail.com

Proyang 2004-08-31
  • 打赏
  • 举报
回复
问题不错,提的很具体,学习一下了
windinwing 2004-08-31
  • 打赏
  • 举报
回复
其实只要把上传的图片目录加上aspnet用户写权限就可以了 
 asp.net默认没有防问其他目录的写权限的!
lhu 2004-08-31
  • 打赏
  • 举报
回复
感谢各位

我知道该怎么做了
Truly 2004-08-30
  • 打赏
  • 举报
回复
若存入数据库,用楼上的方法即可
Truly 2004-08-30
  • 打赏
  • 举报
回复
将上传路径指定在虚拟目录里,就没有权限问题
possible_Y 2004-08-30
  • 打赏
  • 举报
回复
3、于是,客户要求将文章中的所有图片存入到数据库中。
但是,这样的话,动态加载文章的时候又怎么能把图片还原到相应位置呢?文章是html代码,代码里面不能有服务器端控件啊,这图片的显示就是难题了。


如果图片存入到数据库中,那么就会有一个标志字段,如id 
作一个根据输入的url参数来从数据库中读相应图片数据显示的aspx文件,这样在其他html页面里通过<img src="showpic.aspx?id=xxx">就可以现实图片了

possible_Y 2004-08-30
  • 打赏
  • 举报
回复
2、能不能以别的windows账户来访问呢?
当然可以了

使用Impersonate,在webconfig里配制<identity>节点

(1)、<identity impersonate="true" />
这种方式的话ASP.NET进程将扮演http/https请求者的身份。而具体是什么帐号,就跟IIS的安全性设定有关了:
如果IIS允许匿名访问,那么被扮演的将是Iuser_Machine帐号(因为默认的匿名访问账号是Iuser_Machine,当然如果修改过,那被扮演的就是修改过的帐号)。
如果IIS不允许匿名访问,那么浏览器请求者的身份肯定是一个Windows帐号,这个帐号就是被扮演的对象。

(2)、<identity impersonate="true" userName="Account" password="Password"/>
这种方式就直接设置所扮演的固定用户身份

不过微软不推荐使用扮演,无论扮演哪个帐号,一方面是安全性问题(被扮演的帐号可能有一些程序并不需要的多余权限,可能被利用),另一方面是可伸缩性问题(Scalability),因为在访问SQL Server等资源时,无法利用连接池等手段。
possible_Y 2004-08-30
  • 打赏
  • 举报
回复
1、当UploadFile到服务器上时,是以iusr_*访问磁盘的,对吧?

不对,如果是asp3。0就对的,但是asp.net进程的默认用户是ASPNET
ASP.NET和ASP 3.0以及很多其他的Service不同,其他的Service在访问资源(比如SQL Server的服务或者网络共享文件夹)时都是以Service Account的身份进行的(如SQL Server的存储进程在尝试访问其他机器上的资源时,其身份就是MSSQLServer服务的启动帐号),但是由于ASP.NET的程序并不工作在IIS的服务进程中,而是运行在一个称为“ASP.NET Worker Process”的工作进程中(这个工作进程类似一个Windows Service,但是在Windows Service列表中看不到。这个工作进程的控制程序是一个exe文件: asp_wp.exe[on Windows 2000]或者w3wp.exe[on Windows 2003]),所以ASP.NET程序访问资源时将不是扮演IIS服务本身的Service Account(默认为LocalSystem),而是ASPNET这个帐户,这个是指定运行ASPNET_WP.EXE(或者w3wp.exe[on Windows 2003])进程的身份

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧