使用TLS 1.2保护Web请求

在我的这些年的开发中,我可以肯定的一点是,保护网络请求是任何移动应用程序的基本组成部分。几周前我的一个应用程序停止工作,因为我改变了在mettup.com的服务器上的安全套接字层(SSL)认证,这使我认识到传输层安全(TLS)在确保应用程序和服务器请求中起着重要的作用。

我在我的播客合并冲突中更详细地讨论TLS,但简而言之,TLS提供了对称加密技术,可以防止中间人攻击,也可以防止移动设备的任何通信隐私。Meetup更新了他们的认证服务器要求在使用制作请求时最少要TLS1.2版本,因此我很清楚的更新了我的应用程序并启用TLS1.2以支持我的Xamarin.iOS和Xamarin.Android应用,仅改变了一些构建配置。

基础知识

当涉及到网络请求和TLS时,有两个重要的设置我们可以修改:

  • HttpClient: 处理HttpMessageHandler实现以提供消息处理或者提供底层的本机实现。
  • TLS/SSL: 处理应用程序使用的TLS的实现。

我们可以选择的每个实现都提供了不同的功能、速度和兼容性,同时提供了一个标准的网络请求调用,并在幕后透明地表现。

Android

选择HttpClient 和TLS实现的设置,通过右键点击项目可以发现,通过在Windows版Visual Studio中,Properties > Android Options > Advanced或者在Xamarin Studio中Options > Build > Android Build > General

启动位置

在Android上HttpClient 实现我们通过在使用new HttpClient()默认控制,而TLS / SSL实现控件的默认WebRequest。

受控的 HttpClientHandler是 HttpClient 处理完全管理的实现,
几年来它都是Xamarin.Android的默认实现。而在功能方面最兼容的时候,折衷是一个稍大的可执行文件大小,并且执行速度可能比本机实现慢。此实现仅与过去的TLS
1/1.1兼容, 但是,在TLS / SSL实现中有一个新的选项来使用本地TLS 1.2
+,它将在所有的调用下使用谷歌下一个令人讨厌的SSL。

本地的 AndroidClientHandler 选项使用本地的java.net.URLConnection来处理所有的HTTP请求,改进的性能和更小的可执行文件的大小。
AndroidClientHandler 警告虽然它将在所有版本的Android上运行,它只会在Android 5 +设备提供支持TLS 1.2和几个HttpClient功能可能不可用。

选择编程

或者,你可以混合和匹配使用托管和一个电话呼叫的基础上人HttpClient Handler。简单地传递一个 AndroidClientHandler 实例,在创建HttpClient时:

点击(此处)折叠或打开

  1. using System.Net.Http;
  2. ...
  3. // This will use the default message handler for the application; as
  4. // set in the Project Options for the project.
  5. var client = new HttpClient();
  6. // Use AndroidClientHandler for all calls from this HttpClient
  7. var client = new HttpClient(new Xamarin.Android.Net.AndroidClientHandler ());

OS与TLS兼容性

确保这一点很重要,在SSL/TLS实现框中选择 Native TLS 1.2+ ,如果你的应用要求TLS

1.2+。Android的应用程序需要运行的版本将决定我们是否应该选择托管或本机HttpClient实现。对于Meetup网站经理,我选择了HttpClientHandler和本地托管TLS
1.2 +所以我可以支持TLS 1.2 +在所有我的电话,无论安卓版。

iOS & macOS

iOS 和macOS 在处理程序和TLS支持时更简化。所有来自于Xamarin.iOS
10.8的iOS应用都使用苹果的TLS使用本地执行的,它为所有应用程序提供完整的TLS 1.2
+支持。还有几个选项,开发者可以选择当谈到HttpClient实现,通过在Visual Studio中右击工程并选择 Properties > iOS Build > Advanced 或者在Xamarin Studio选择 Options > Build > iOS Build来找到。

有三种不同的HttpClient的处理程序,可以选择iOS应用。默认管理HttpClientHandler提供HttpClient功能最大的兼容性。然而,像管理Android
HttpClient处理程序,它还需要更多的托管代码,可以增加应用程序的大小。另外两个选项,CFNetwork Handler(iOS 6
+)和NSURLSession Handler(iOS 7
+),包装器是否围绕各自的原生api,提供用于网络通信和传输的底层本机代码。使用这些将导致更小的可执行文件,提高网络性能,并使用底层的IOS队列和线程。缺点是,有可能不是所有的全功能的.net
HttpClient的功能和选项。

选择编程

就像 Xamarin.Android我们可以选择我们的应用程序使用HttpMessageHandler务实:

点击(此处)折叠或打开

  1. using System.Net.Http;
  2. ...
  3. // This will use the default message handler for the application; as
  4. // set in the Project Options for the project.
  5. var client = new HttpClient();
  6. // This will create an HttpClient that explicitly uses the CFNetworkHandler
  7. var client = new HttpClient(new CFNetworkHandler());
  8. // This will create an HttpClient that explicitly uses NSUrlSessionHandler
  9. var client = new HttpClient(new NSUrlSessionHandler());

更新TLS 和HttpClient 实现,将使我们的应用程序能够完全安全,并兼容我们应用程序必须与之交互的任何后端。

了解更多

一定要看我们的更新,跨平台 传输层安全 文档, 对于一个完整的,所有的TLS选项Xamarin开发进行了深入的分析,其中包括额外的切换和指导。你也可以查看特定平台的文档,为 AndroidiOS / macOS 分别颁发的。还有,一定要听我的考验和磨难,在 Merge Conflict 37: TLS – How do you EVEN上。最后,学习更多Xamarin大学的 自学课程 “Consuming REST-based Web Services”, 它研究了如何在移动应用程序中集成和使用REST式Web服务。

时间: 2024-10-05 11:04:17

使用TLS 1.2保护Web请求的相关文章

使用 Spring Security 保护 Web 应用的安全

使用 Spring Security 保护 Web 应用的安全 安全一直是 Web 应用开发中非常重要的一个方面.从安全的角度来说,需要考虑用户认证和授权两个方面.为 Web 应用增加安全方面的能力并非一件简单的事情,需要考虑不同的认证和授权机制.Spring Security 为使用 Spring 框架的 Web 应用提供了良好的支持.本文将详细介绍如何使用 Spring Security 框架为 Web 应用提供安全支持. 4 评论: 成 富, 软件工程师, IBM 中国软件开发中心 201

安全的复杂之处:安全web请求的架构

目录[-] 借助于Spring Security的强大基础配置功能以及内置的认证功能,我们在前面讲述的三步配置是很快就能完成的:它们的使用是通过添加auto-config属性和http元素实现的. 请求是怎样被处理的? 在auto-config场景下,发生了什么事情? 用户是怎样认证的? 让我们看一下在较高层次示意图中反映出的抽象工作流程,并将其细化到这个基于表单认证的具体实现.你可以看到UsernamePasswordAuthenticationFilter负责(通过代理从它的抽象父类中)创建

经验总结20--C#模拟WEB请求

非常多语言能够使用代码进行WEB请求,获取到须要的数据. 方便调用别人的接口,自己进行处理. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "GET"; request.ContentType = "application/json; charset=utf-8"; //有时候须要该參数.限制浏览器 request.UserAgent = &qu

web请求响应

转载自:SanMaoSpace 1.Web开发的定义首先看看微软对Web开发的定义:Web开发是一个指代网页或网站编写过程的广义术语.网页使用 HTML.CSS 和 JavaScript编写.这些页面可能是类似于文档的简单文本和图形.页面也可以是交互式的,或显示变化的信息.编写交互式服务器页面略微复杂一些,但却可以实现更丰富的网站.如今的大多数页面都是交互式的,并提供了购物车.动态可视化甚至复杂的社交网络等现代在线服务. 通俗的说,Web开发就是我们说的做网站.它分为网页部分和逻辑部分也就是我们

Django用户认证系统(二)Web请求中的认证

在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authenticated()来区分,例如: if request.user.is_authenticated(): # Do something for authenticated users. else: # Do something for anonymous users. 登陆login login(

Web请求中同步与异步的区别

普通的B/S模式就是同步,而AJAX技术就是异步,当然XMLHttpReques有同步的选项. 同步:提交请求->等待服务器处理->处理完毕返回.这个期间客户端浏览器不能干任何事. 异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕. 举个生动的例子吧: 同步就是你叫我去吃饭,我听到了就和你去吃饭:如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭. 异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭. 所以,要

深入Web请求过程(笔记)

深入Web请求过程 B/.S架构的好处: B/S架构带来两方面好处: l  客服端使用统一浏览器,由于浏览器具有统一性,有效屏蔽了不同服务提供商提供给用户使用服务的差异性.. l  服务端基于统一的HTTP,为服务提供商简化了开发模式,节省开发成本,服务开发者只需要关注提供服务的应用逻辑. B/S网络架构概述 B/S网络架构从前端到后端都是基于统一的应用层协议HTTP来交互数据,与传统C/S架构采用的长连接的交互模式不同,HTTP采用无状态的短连接的通信方式.通常情况下,一次请求就完成一次数据交

Spring Boot中使用AOP统一处理Web请求日志

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接.打开事务/关闭事务.记录日志等.基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率.

Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f "fmt" "log" "net/http" // "strings" ) func sayhelloName(w http.ResponseWriter, r *http.Request) { // r.ParseForm() // f.P