给HFSoft.Net的Channel引入PublicKey
HFSoft.Net提供简单的方式来建立基于TCP协议的数据传输的服务,在数据传输过程中存在着一个比较严重的问题,就是如何确定请求用户的合法性;虽然组件提供自定义的验证方式来保证Channel的合法性,从而使一些非法的用户获取不到相关数据.但在实现际应用中这种验证并不足够;试想一下一个用户发出大量的验证请求时服务器会现什么情况?如果验证过程是的运算比较复杂那面对的后果更严重!为了解决以上问题组件引用了PublicKey(公钥),当服务器端配置PublicKey时,那么相应请求的客户端就必须配置相应的PublicKey;客户端配置的PublicKey和服务端不一样,服务端会自动关闭相应请求的连接。当然PublicKey并不能真正解决前面描述的问题,只是加大了攻击的成本。为了保证服务安全还必须定时替换PublicKey。
组件在实现PublicKey过程由Channel派生出两个对象ServerChannel和ClientChannel对PublicKey进行处理。ServerChannel在接收数据时要进和PublicKey验证,ClientChannel在发送数据时在表头添加PublicKey值。
配置PublicKey
<configSections>
<section name="netconfig" type="HFSoft.Net.NetConfigSectionHandler, HFSoft.Net, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<netconfig>
<publickey value="Public"/>
</netconfig>
服务端和请求端配置方式一样。