C# 安全地将图片存储在共享上,以便在web应用程序中使用
假设我们有摄影师在一个部门使用一台电脑。他们拍摄活动的照片,然后在应用程序中上传和组织照片。默认情况下,该应用程序获取某人的共享位置并将图片复制到该共享 在web服务器上有一个我们指向的共享。我们希望这样做,只有该应用程序才能访问该共享,只有该web应用程序(当然,任何具有物理服务器管理员登录的人都可以) 另外,还应确保任何web浏览器都可以显示图像(我相信Firefox不能将文件位置设置为C# 安全地将图片存储在共享上,以便在web应用程序中使用,c#,asp.net,security,C#,Asp.net,Security,假设我们有摄影师在一个部门使用一台电脑。他们拍摄活动的照片,然后在应用程序中上传和组织照片。默认情况下,该应用程序获取某人的共享位置并将图片复制到该共享 在web服务器上有一个我们指向的共享。我们希望这样做,只有该应用程序才能访问该共享,只有该web应用程序(当然,任何具有物理服务器管理员登录的人都可以) 另外,还应确保任何web浏览器都可以显示图像(我相信Firefox不能将文件位置设置为\\server\share) 从逻辑上看,它是这样的: 摄影师使用公共计算机上的应用程序 应用程序复制图
\\server\share
)
从逻辑上看,它是这样的:
等等,什么?您想在浏览器中向用户显示一些图片,但不允许他们下载?这是不可能的。只需将共享权限(即右键单击)配置为仅限于某个windows用户即可。在该windows用户下运行应用程序,使其能够访问该共享。完成了
用户可以访问
不,我希望他们只能看到网页上的图像。我不希望终端计算机上的任何人都能够查看web服务器从中获取这些图像的文件夹。看过facebook的电影吗?我不希望有人能够在我的共享目录中找到我的所有文件,并滥用人们委托给我的图片。那么,你必须采用像@Adam Tuliper建议的解决方案。仅允许您的asp.net应用程序访问共享上的文件(并拒绝所有其他用户访问),并创建一个类似于
photo.asp?id=123
的页面,然后在共享上查找photo123.jpg
,读取该页面,并将其数据传递给访问者。这仍然很容易在HttpRequests中循环,并在每次抓取Web服务器上的每幅图片时将ID增加一个。然后将ID随机化,比如GUID或文件名的MD5哈希加上预定的salt。