13

我使用 Asp.net Web API 向客户端(iphone、android、mac os、web、windows、...)提供 api。我想实现一些更安全的API,我阻止其他人理解链接中的参数(以防他们破解链接)

我的问题是:我可以为此使用 Https/SSL 吗?是否足够安全?如果是,我应该在客户端安装任何东西来实现这个吗?

谢谢

4

1 回答 1

15

这取决于您将在何处托管 ASP.NET Web API 应用程序。如果您打算将它托管在 IIS 下,除了通过 IIS 配置 SSL 之外,您不需要做任何特别的事情。

IMO 您应该做的一件事是通过您的应用程序强制使用 HTTPS。您可以使用不同的方式(例如 IIS URL 重定向模块等)来实现这一点,但您也可以使用消息处理程序在应用程序级别执行此操作:

public class RequireHttpsMessageHandler : DelegatingHandler {

    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {

        if (request.RequestUri.Scheme != Uri.UriSchemeHttps) {

            var forbiddenResponse = request.CreateResponse(HttpStatusCode.Forbidden);
            forbiddenResponse.ReasonPhrase = "SSL Required";
            return Task.FromResult<HttpResponseMessage>(forbiddenResponse);
        }

        return base.SendAsync(request, cancellationToken);
    }
}

HttpClient也像任何其他 .NET Web 客户端一样支持 SSL。看看这篇文章:http: //blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx

于 2012-10-23T15:42:17.277 回答