使用自定义服务器通过http保护数据传输

时间:2010-07-03 07:03:05

标签: c++ windows security sockets

我对应用程序的安全性方面很陌生。我有一个C ++窗口服务(服务器),它侦听特定端口的http请求。 http请求可以通过ajax或C#客户端进行。由于现在有一些范围变化,我们必须确保客户端和用C ++编写的自定义服务器之间的这种通信。

因此,我正在寻找确保这种沟通的选择。有人可以用我可以采取的方法帮助我实现这一目标。

由于 DPAK

4 个答案:

答案 0 :(得分:0)

使用HTTPS

答案 1 :(得分:0)

鉴于您有一个现有的HTTP服务器(非IIS)并且您想要实现HTTPS(这很容易搞砸并且难以实现),您有几个选择:

  1. 将您的服务器重写为COM对象,然后组合一个IIS Web服务,调用您的COM对象来实现Web服务。完成此操作后,您可以配置IIS以通过HTTP和HTTPS提供Web服务。

  2. 在与现有服务器相​​同的主机上安装代理服务器(Internet Security and Acceleration ServerApache with mod_proxy),并设置代理服务器以通过HTTPS进行侦听,然后将请求反向代理服务。

  3. 第二个选项几乎不需要更改您的应用程序;第一个选择是更好的长期架构运动。

答案 2 :(得分:0)

保护通信渠道的好工具包是OpenSSL

尽管如此,即使使用工具包,在实施安全层时仍有很多方法可以犯错,这会使您的数据受到攻击。您应该考虑使用现有的https服务器并让它在环回通道上将请求转发到您的服务器。

答案 3 :(得分:0)

使用OpenSSL或Microsoft的SChannel SSPI接口执行此操作相当容易。

它对您来说有多复杂取决于您的服务器结构。如果它是传统风格的BSD套接字“选择”类型服务器,那么从OpenSSL或SChannel获取示例应该是相当直接的,并且可以很快地运行。

如果您正在使用更复杂的服务器设计(异步套接字,IOCP等),那么它的工作量会更多,因为示例不会显示这些内容。我在2002年为Windows Developer Magazine撰写了一篇文章here,其中展示了如何将OpenSSL与异步套接字一起使用,如果需要,此代码可用于处理重叠的I / O和基于IOCP的服务器。