2009-09-10 41 views

回答

3

完全无法保证Web方法的安全。毕竟,如果您从您的网页访问它们,则可以直接从客户端浏览器访问它们。

您可以添加一个额外的参数,需要包含某种一次性密码/令牌,并在页面呈现时生成一个。这会让别人更难以继续使用您的网络服务,而无需实际访问您的网站。

+0

这不完全是真的。你可以放置会话变量[System.Web.Services.WebMethod(EnableSession = true)]你可以放置角色,防伪令牌等,你甚至可以每次生成动态url。我在同一页面上使用Aspx页面和aspx Web方法,页面不是匿名页面.http://www.dotnetbull.com/2012/06/security-in-aspnet-ajax-webservice.html – 2017-09-28 17:11:25

1

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

4

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

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

请注意,我正在讨论将安全web方法添加到ASPX页面。对于网络服务,认证和授权可能完全不同。例如,每个请求都可能需要凭证,并且可能是方法本身的“信封”或参数的一部分。保护Web服务可能是其自身问题的一个主题。

相关问题