WEB开发网
开发学院网络安全安全技术 使用协议转换 - 防御提示 阅读

使用协议转换 - 防御提示

 2009-02-09 13:52:49 来源:WEB开发网   
核心提示: 其余代码涉及通过 WindowsIdentity 中的 S4U 登录构造函数来进行用户登录,以及随后将令牌复制回调用方的进程,使用协议转换 - 防御提示(8),令人欣慰的是,由于登录服务将以 SYSTEM 来运行,需要重申一点:不要只是将我的网关示例复制粘贴到您自己的应用程序中,那样的话,

其余代码涉及通过 WindowsIdentity 中的 S4U 登录构造函数来进行用户登录,以及随后将令牌复制回调用方的进程。令人欣慰的是,由于登录服务将以 SYSTEM 来运行,默认情况下,它会拥有将句柄复制到它所需要的进程的权限。您会发现,通过设计,SYSTEM 拥有了针对系统中所有对象(包括所有进程)的完全权限。请注意对 throwIfUserIsAdmin 的调用。该帮助器方法检查所得到的令牌是否有本地管理权限。这有助于防止遭到破坏的网关使用登录服务来获得管理权限,从而使整个解决方案毫无意义!

在我的示例代码中您可能需要注意的最后一点是:我已经编写了一些自定义的 SafeHandle 派生类以帮助管理句柄。一般而言,如果您自己要做大量的平台调用工作,编写上面的派生类是个不错的想法。针对这些问题的代码易于理解,可以在本专栏的下载内容中提供的 SafeHandles.cs 文件找到这些代码。可以通过 Internet 搜索“Shawn Farkas SafeHandle”,您将发现我所喜欢的 Microsoft .NET Framework 团队的一个成员所撰写的一篇非常棒的博客文章,该文向您展示了构建自己的 SafeHandle 类是何等的容易。

一个示例网关

在向您介绍示例网关之前,我要强调一些真正至关重要的事项:协议转换很容易被误用!这一功能无法确保您正确地验证所传入的用户。当域管理员为您的 Web 应用程序标识启用协议转换时,意味着她向您委托了域控制器通常要做的工作 - 验证用户身份。

现在,以尽可能有效的方式来验证所传入的用户,只使用其特定权限来进行协议转换并登录到相应的 Windows 用户帐户以代表该用户,这一系列过程已由网关来承担。

本文的重点在于协议转换,因此,与大量可能在前端采用的验证用户的方法不同,我的网关示例根本没有涉及到验证所传入的用户。它只是让您输入用户名和您要试图使用该用户的 S4U 登录来读取的网络中的文件的路径。您可以采用我的示例,在其基础上进行扩展,添加任何有意义的前端身份验证方案,以便从低权限网关进程来练习使用协议转换。需要重申一点:不要只是将我的网关示例复制粘贴到您自己的应用程序中,那样的话,您会使自己疏于防范,易受攻击!

上一页  3 4 5 6 7 8 9  下一页

Tags:使用 协议 转换

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接