我正在编写一个小服务,它将文件存储在磁盘上,然后根据请求将它们返回给客户端。
当涉及到保护此服务时,我正在查看我的选择,以便任何未经授权的程序都无法读取/写入数据。
最简单的解决方案是使用模拟,这样处理调用的服务线程就可以模拟客户端,并让文件系统对可以执行或不执行的操作进行排序。
这里的问题是,服务本身必须能够在没有模拟的情况下读取文件(在后台运行的周期性函数)。
我确实读过以下关于MSDN的章节,我正在寻找您或其他人在过去使用过的实用技巧,以确保此类服务的安全。
http://msdn.microsoft.com/en-us/library/aa373582(v=vs.85).aspx
发布于 2011-03-15 15:47:46
您通常只在处理客户端请求时进行模拟。在其余时间,服务配置为使用具有(或配置为具有)执行其必要任务的完全权限的系统帐户(通常为系统帐户)。
当然,要注意的安全问题是,确保用户不能将自己提升到该帐户。
安装服务时,您需要考虑的一件事是选择服务帐户。使用一个内置帐户,或者为您的服务创建一个特殊用途的帐户。有"LocalService","NetworkService","LocalSystem“iirc的内置帐户,否则你可以选择一个现有的或新的用户或管理帐户(不推荐)。
当您创建这些文件时(假设您没有传递任何显式的ACL信息),它们将继承所属文件夹的可继承访问权限。这些设置使“用户(包括您模拟的用户的组)”具有创建权限。“所有者”拥有读/写权限。“您的默认服务帐户”拥有完全的控制权。
这意味着您的服务在不模拟任何人的情况下拥有对这些文件的完全访问权限。当模拟某人时,只能读/写该特定用户文件。
登录到服务器的任何常规用户也将无法访问这些文件(除非他们恰好是被模拟的用户)。但是,管理员可以取得所有权,然后为自己分配读/写访问权限。本地管理员不会(也不应该)进行防御。
https://stackoverflow.com/questions/5308776
复制相似问题