我最近离开了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
答案 0 :(得分:0)
我猜你指的是共享函数而不是实例函数。可能存在边缘情况,例如必须调用包含webmethod的类的实例构造函数才能使实例保存。在这种情况下,只有类的实例方法才能安全。但这将是课程实施的细节。
当然,您无法将用户数据存储在该类的共享成员中,因为每个用户都将访问该相同的字段。但是,如果您 - 如您的示例中所述 - 仅访问区分具有特定机制的用户(如HttpContext.Current.Session)的服务,您会注意到遇到这种错误。但同样,这种风险并不是特定于共享功能的使用,所以我的答案是&#34; no&#34;。