验证远程程序完整性/有效性,作为WCF服务安全性的一部分

时间:2010-10-17 16:00:44

标签: c# wcf security

我有一个在远程系统上运行的应用程序。远程系统是内置于信息亭的嵌入式计算机。结果,他们有点“不信任”,因为他们的物理安全性相当宽松。但是,这些自助服务终端可以通过WCF服务进行信用卡处理等,直到我的服务器。

使用机器证书等,我可以验证客户端是否是他们所说的人,这可以防止有人以某种方式将我的二进制文件从服务终端上复制出来然后在他们自己的机器上运行。但是,我如何防止以下两次攻击:

  • 有人拿二进制文件,恶意修改它,然后在系统上运行它
  • 有人反编译我的应用程序,并使用我的部分代码(例如我引用证书或共享机密的地方)编写自己的应用程序,并在机器上运行它。

显然,我已经采取措施使用操作系统来防止这种攻击,但我需要在服务器上确保它没有被欺骗。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果机器不是物理安全的,那么就无法保证不会发生任何攻击。集中精力尽量减少受损机器可能造成的损害。例子:

  • 每个客户端都应拥有自己的证书/密钥,这样您就可以轻松撤销受感染机器的凭据,而不会影响其他地方的操作
  • 最大限度地减少服务器提供的不必要的功能(例如,客户无需检索信用卡号码 - 而是返回某种可用于启动付款的代理令牌)
  • 最小化存储在客户端的敏感数据,并在不再需要时删除
  • 在服务器端强制执行业务逻辑
  • 服务器在执行敏感操作之前需要身份验证
  • 日志敏感操作服务器端,以便您拥有审计跟踪和恶意活动的早期警告

一般情况下,采取与编写暴露给群众的网络应用程序时相同的预防措施......