热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

NET框架下注意.NETRemoting安全性

文章标题:NET框架下注意.NETRemoting安全性。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  体系结构
  图 1 显示在 ASP.NET 中驻留远程对象时的基本 .NET Remoting 体系结构。如果主要关心安全性问题,那么建议使用 ASP.NET 主机和 HTTP通道进行通信,因为它允许远程对象利用 ASP.NET和 IIS 提供的基本安全服务。
  
  有关可能使用的主机和通道类型范围的详细信息以及比较信息,请参见本章后面的“选择一个主机进程” 。
   
  图 1. .NET Remoting 体系结构
  
  客户端与进程内的代理对象进行通信。可以通过远程对象代理设置身份验证凭证(例如,用户名、密码和证书等等)。方法调用通过接收链进行传递(您可以实现自己的自定义接收来执行数据加密),并到达负责通过网络发送数据的传输接收。在服务器端,调用通过相同的管道进行传递,并向对象发出调用。
  
  注 本章中使用的术语“代理” 一词是指客户端进程内的代理对象,客户端通过该对象与远程对象进行通信。不要将它与术语“代理服务器”混淆。
  
  Remoting 接收
  当客户端在远程对象上进行方法调用时,.NET Remoting 使用传输通道接收、自定义通道接收和格式化程序通道接收。
  
  传输通道接收
  传输通道接收通过网络在客户端与服务器之间传递方法调用。.NET提供了 HttpChannel 和 TcpChannel 类,但是,可以对体系结构进行完全扩展,并且插入您自己的自定义实现方法。
  
  • HttpChannel。在将远程对象驻留在 ASP.NET 中时,可以使用此通道。此通道使用 HTTP 协议在客户端和服务器之间发送消息。
  
  • TcpChannel。在将远程对象驻留在 Microsoft® Windows® 操作系统服务或其他可执行文件中时,可以使用此通道。此通道使用 TCP 套接字在客户端和服务器之间发送消息。
  
  • 自定义通道 。自定义的传输通道可以使用任何基本的传输协议在客户端和服务器之间发送消息。例如,自定义通道可以使用命名管道或邮件槽。
  
  比较传输通道接收
  下表对两个主要的传输通道接收进行了比较。
   
  自定义接收
  可以在通道接收管道内的不同位置上使用自定义通道接收来修改在客户端和服务器之间发送的消息。提供加密和解密功能的通道接收就是一个自定义通道接收的示例。
  
  格式化程序接收
  格式化程序接收获取方法调用,并将它们序列化为可通过网络发送的流。.NET 提供两种格式化程序接收:
  
  • 二进制格式化程序。它使用 BinaryFormatter 类将方法调用打包为一个序列化的二进制流,然后传递该流(使用 HTTP POST)以便向服务器发送数据。二进制格式化程序将 HTTP 请求中的内容类型设置为“application/octet-stream”。
  
  与 SOAP 格式化程序相比,二进制格式化程序可以提供更高的性能。
  
  • SOAP 格式化程序.它使用 SoapFormatter 类将方法调用打包为 SOAP 消息。在HTTP 请求中将内容类型设置为“text/xml”,并使用 HTTP POST 将其传递到服务器。
  
  对驻留在 ASP.NET 中的请求进行剖析
  远程对象终结点的地址是由以 .rem 或 .soap 扩展文件名结尾的 URL 指定的(例如 http://someserver/vDir/remoteobject.soap)。当 IIS 收到远程对象(带有 .rem 或 .soap 扩展名)的请求时,就会将它(在 IIS 中)映射到 ASP.NET ISAPI 扩展 (Aspnet_isapi.dll) 中。ISAPI 扩展将该请求转发到 ASP.NET 辅助进程 (Aspnet_wp.exe) 中的应用程序域。图 2 显示了事件的顺序。
   
  图 2. 服务器端处理
  
  图 2 显示了以下事件顺序:
  
  1.通过 HTTP 接收 .soap 或 .rem 请求,并将其映射到 Web 服务器上的特定虚拟目录。
  
  2.IIS 检查 .soap/.rem 映射,然后将文件扩展名映射到 ASP.NET ISAPI 扩展 Aspnet_isapi.dll 中。
  
  3.ISAPI 扩展将请求传递给 ASP.NET 辅助进程 (Aspnet_wp.exe) 中的应用程序域。如果这是在该应用程序上发送的第一个请求,则创建一个新的应用程序域。
  
  4.调用 HttpRemotingHandlerFactory 处理程序,然后 remoting 基础结构读取 Web.config 文件中的 部分,它控制服务器端的对象配置(例如,单个调用或单个参数)和授权参数(使用 元素)。
  
  5.Remoting 基础结构查找包含远程对象的程序集并对其进行实例化。
  
  6.Remoting 基础结构读取 HTTP 标头和数据流,然后在远程对象上调用该方法。
  
  注:在此进程中,ASP.NET 调用正常的事件处理程序序列。您可以有选择地在 Global.asax 中实现一个或多个事件处理程序,例如, BeginRequest、AuthenticationRequest、AuthorizeRequest 等等。在请求到达远程对象方法时,将代表已验证用户的 IPrincipal 对象存储在 HttpContext.User (和 Thread.CurrentPrincipal) 中,并且可以将它用于授权。例如,使用用户权限要求和编程角色检查。
  
  ASP.NET 和 HTTP 通道
  Remoting 没有其自己的安全模型。客户端(代理)和服务器(远程对象)之间的身份验证和授权是通过通道和主机进程执行的。可以组合使用以下的主机和通道:
  
  • 自定义的可执行文件和 TCP 通道。这种组合不提供任何内置的安全功能。
  
  • ASP.NET 和 HTTP 通道.这种组合通过基本的 ASP.NET 和 IIS 安全功能提供身份验证和授权。
  
  
  ASP.NET 中驻留的对象可以利用 ASP.NET 和 IIS 的基本安全功能。它们包括:
  
  • 身份验证功能。在 Web.config 中配置 Windows 身份验证功能:
  
  
  
  IIS 中的设置控制所使用的 HTTP 身份验证类型。
  
  通用的 HTTP 标头用于对请求进行身份验证。可通过配置远程对象代理为客户端提供凭据,也可以使用默认凭据。
  
  不能使用表单或 Passport 身份验证,因为通道没有提供允许客户端访问 COOKIEs 的方法,而这是这两种身份验证机制的一个要求。另外,表单和 Passport 身份验证需要重定向到要求客户端交互的登录页面。远程的服务器端对象可用于非交互式的场合。
  
  • 授权功能。使用标准的 ASP.NET 授权方法对客户端进行授权。
  
  可配置的授权选项包括:
  
  • URL 授权。
  
  • 文件授权(它需要特定的配置。有关说明,请见本章后面的“使用文件授权”)。
  
  编程授权选项包括:
  
  • 用户权限要求(说明性和命令性的)。
  
  • 使用 IPrincipal.IsInRole 进行明确的角色检查。
  
  
  • 安全通信功能。应该使用 SSL(和/或 IPSec)保护客户端和服务器之间数据传输的安全。
  .NET Remoting 网关守卫
  ASP.NET 驻留的远程对象使用的授权点(或者网关守卫)包括:
  
  • IIS。如果关闭了匿名身份验证,则 IIS只允许来自特定用户的请求,即它可以在其自己的域或受信任的域中验证这些用户的身份。 IIS 还提供 IP 地址和 DNS 过滤功能。
  
  • ASP.NET
  
  • UrlAuthorizationModule。可以配置应用程序 Web.config 中的 元素,控制哪些用户和用户组可以访问应用程序。授权是以存储在 HttpContext.User 中的 IPrincipal 对象为基础。
  
  • FileAuthorizationModule。FileAuthorizationModule 可用于远程组件,但这需要进行特定的配置。有关说明,请参见本章后面的“使用文件授权”。
  
  注要进行文件授权,并不要求使用模拟功能。
  
  FileAuthorizationModule 类只对请求的文件或 URI(例如,.rem 和 .soap)执行访问检查,而不对在远程对象中通过代码访问的文件执行访问检查。
  
  • 用户权限要求和明确的角色检查。除了使用 IIS 和 ASP.NET 可配置的网关守卫外,还可以将用户权限要求(以说明性方式或命令性方式)用作附加的细分访问控制机制。通过使用用户权限检查,您可以根据各个用户的标识和组成员身份(由附加到当前线程的IPrincipal 对象定义)控制对类、方法或个别代码块的访问。
  
  注用于请求角色成员身份的用户权限检查与调用IPrincipal.IsInRole 来测试角色成员身份不同。如果调用者不是指定角色的成员,则前者会出现异常错误,而后者只返回一个布尔值来确认角色成员身份。
  
  利用 Windows 身份验证,ASP.NET 能自动将一个代表已验证身份用户的WindowsPrincipal 对象连接到当前的 Web 请求(使用 HttpContext.User)。
  
  身份验证
  在结合使用 Remoting 和 ASP.NET Web 应用程序客户端时,就会在 Web 应用程序和远程对象主机上进行身份验证。远程对象主机可以使用的身份验证选项取决于主机类型。
  
  驻留在 ASP.NET 中
  当对象驻留在 ASP.NET 中时,可以使用 HTTP 通道在客户端代理和服务器之间传递方法调用。HTTP 通道使用 HTTP 协议对服务器的远程对象代理进行身份验证。
  
  以下列表说明在 ASP.NET 中驻留对象时可以使用的一组身份验证选项:
  
  • IIS身份验证选项。匿名、基本、摘要、Windows 集成和证书。
  
  • ASP.NET 身份验证选项。Windows 身份验证或无(用于自定义的身份验证实现)。
 
推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
author-avatar
加勒比海盗530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有