NET框架下注意.NET Remoting安全性 下载本文

NET框架下注意.NET Remoting安全

http://www.sina.com.cn 2008年12月22日 22:14 比特网ChinaByte

体系结构

图 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 将其传递到服务器。