2010-03-05 38 views
5

我刚读了几个职位在某种程度上隐藏的Silverlight代码。 主要结论是,你可以混淆它,但你不能真正隐藏它,所以必须在服务器上完成安全的事情。 但是,然后,任何人都可以通过Fiddler看到发布到特定Web服务的数据。例如,他们可以看到我在调用UpdateCustomer.asmx。 如果他们这样做,我能做些什么来阻止他们调用asmx呢? 有没有办法只允许我的Silverlight应用程序调用该方法?如何保护我的服务器方法

回答

0

我想,如果你想成为真正的偏执狂,你可以通过一个Web服务端点元帅从您的客户端应用程序的所有调用和加密的有效载荷...是这样的:

  • 客户端应用程序命中端点“givemeatoken的.asmx”
  • 服务器生成的一些关键令牌
  • 客户使用加密所述令牌的所有呼叫,将它们传递给单个端点‘onlyservice.asmx’
  • 服务器使用解密令牌调用的有效载荷,并呼叫路由到‘真实’网页服务。
  • 服务器使用令牌检索调用的结果,重新加密,并传回给客户
  • 客户端解密结果和做的事情需要做。

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

+0

谢谢,我将实施身份验证机制。 – Michel 2010-03-09 08:42:30

1

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

为什么是一个问题,如果有人从一个自定义的客户访问你的网址是什么?您正在验证用户,对不对?

+0

不,在这种情况下用户没有被认证。 – Michel 2010-03-07 19:03:54