因为webmethods是共享的,一个用户是否有可能获得另一个用户的结果?

时间:2014-03-26 13:50:53

标签: asp.net ajax vb.net shared webmethod

我最近离开了Ajax.dll并开始使用WebMethods。我已经读到共享功能很危险,并且已经阅读了它们的原因。我想知道是否有任何有使用webmethod经验的人可以告诉我是否存在基于Session调用用户特定数据并将其返回给错误用户的危险,因为WebMethod需要共享。我不指望,但它一直困扰着我。

<WebMethod(EnableSession:=True)> _
<ScriptMethod()> _
Public Shared Function GetSomething(ByVal SomeUserSpecificVariable As String) As String

 // Do something with HttpContext.Current.Session("UserID")

 Return something

End Function

1 个答案:

答案 0 :(得分:0)

我猜你指的是共享函数而不是实例函数。可能存在边缘情况,例如必须调用包含webmethod的类的实例构造函数才能使实例保存。在这种情况下,只有类的实例方法才能安全。但这将是课程实施的细节。

当然,您无法将用户数据存储在该类的共享成员中,因为每个用户都将访问该相同的字段。但是,如果您 - 如您的示例中所述 - 仅访问区分具有特定机制的用户(如HttpContext.Current.Session)的服务,您会注意到遇到这种错误。但同样,这种风险并不是特定于共享功能的使用,所以我的答案是&#34; no&#34;。