【问题标题】:Can someone access my WebMethods from outside of the page?有人可以从页面外部访问我的 WebMethods 吗?
【发布时间】:2009-09-10 12:13:56
【问题描述】:

我有一个页面,它有 webmethods 我可以通过 ScriptManager 从 aspx 页面使用这些方法,我想知道是否有人可以从页面外部访问这些方法,如果它是我如何保护 WebMethods?

【问题讨论】:

    标签: asp.net webmethod


    【解决方案1】:

    您的网络方法将具有与您的网页相同的安全性。如果您需要确保它们被安全访问,请在允许操作之前检查有效会话、经过身份验证的用户等。对 Web 方法的请求应包括确定发出请求的用户是否已通过身份验证所需的各种 cookie。根据经过身份验证的用户的身份、他们的角色等,您可以确定是否应处理请求。如果您使用 web 配置来保护您的页面,则应用于页面的安全性也应该应用于页面上的 web 方法。

    请注意,您不能保证有人不会简单地独立于浏览器发出请求(即,请求始终来自应用程序的 UI)。您需要进行与任何页面相同的安全检查。

    请注意,我说的是保护添加到 ASPX 页面的 Web 方法。对于Web 服务,身份验证和授权的处理方式可能完全不同。例如,每个请求都可能需要凭据,并且可能是“信封”的一部分或方法本身的参数。保护 Web 服务的安全可能本身就是一个问题。

    【讨论】:

      【解决方案2】:

      完全保护网络方法是不可能的。毕竟,如果您从您的网页访问它们,它们就是直接从客户端浏览器访问的。

      您可以添加一个额外的参数,该参数需要包含某种一次性密码/令牌,并在页面呈现时生成一个。这将使某人在不实际访问您的网站的情况下继续使用您的网络服务变得更加困难。

      【讨论】:

      • 这并不完全正确。您可以放置​​会话变量 [System.Web.Services.WebMethod(EnableSession = true)] 您可以放置​​角色、防伪令牌等。您甚至可以每次生成动态 url。我在同一页面上使用 Aspx 页面和 aspx Web Method页面不是匿名页面。dotnetbull.com/2012/06/security-in-aspnet-ajax-webservice.html
      【解决方案3】:

      是的,添加 WebMethod 属性使该方法可远程调用,这意味着您可以使用 javascript 调用它。简单地说,您不应该公开您不希望第三方能够调用的 WebMethods。但有关安全和 Web 服务的更多信息,请参阅:http://msdn.microsoft.com/en-us/magazine/cc188947.aspx

      【讨论】:

        【解决方案4】:

        是的。

        但你可以secure them easily

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-10
          • 2021-04-21
          相关资源
          最近更新 更多