如何保护我的服务器方法

时间:2010-03-05 23:56:15

标签: silverlight security

我刚刚阅读了一些关于以某种方式隐藏Silverlight代码的帖子。 主要结论是你可以对它进行模糊处理,但你无法真正隐藏它,因此必须在服务器上完成安全的事情。 但是,任何人都可以通过Fiddler看到哪些数据发布到特定的Web服务。例如,他们可以看到我正在调用UpdateCustomer.asmx。 如果他们这样做,我该怎么做才能阻止他们称之为asmx呢? 有没有办法只允许“我的Silverlight应用程序”调用该方法?

2 个答案:

答案 0 :(得分:1)

不。有人可以随时对您的Silverlight应用程序进行反向工程,以窃取您使用的任何身份验证凭据。你可以使这个逆向工程过程比其他方式更乏味,但你不能让它变得不可能。

如果有人从自定义客户端访问您的网址,为什么会出现问题?您正在验证用户,对吧?

答案 1 :(得分:0)

我想如果你想要真正偏执,你可以通过一个Web服务端点封送来自客户端应用程序的所有调用并加密有效负载...类似于:

  • 客户端应用程序命中端点“givemeatoken.asmx”
  • 服务器生成一些密钥令牌
  • 客户端使用所述令牌加密所有呼叫,将它们传递到单个端点“onlyservice.asmx”
  • 服务器使用令牌解密呼叫的有效负载,并将呼叫路由到“真正的”Web服务。
  • 服务器检索调用结果,使用令牌重新加密,然后传回客户端
  • 客户端解密结果并完成它需要做的事情。

但那只是疯狂的谈话......而且有点毫无意义,因为你可以对Silverlight代码本身进行反向工程,以弄清楚“真正的”服务是什么。如果您确实想要保护您的应用,请使用身份验证;在客户端和服务器端(即,对服务的调用都需要某种身份验证票证)