在 httpClient 中使用 POST 时如何确保数据被加密

Posted

技术标签:

【中文标题】在 httpClient 中使用 POST 时如何确保数据被加密【英文标题】:How to assure that data gets encrypted when using POST in httpClient 【发布时间】:2018-12-13 10:45:00 【问题描述】:

我正在使用 VS 2017 和 Xamarin 制作应用程序。我计划使用 httpClient (android)、PostAsync() 将用户名和密码(在请求正文中)发送到我的服务器。

我看过类似答案的例子 Send HTTP Post request in Xamarin Forms C# 只是想知道是否有办法检查发送的数据是否真正加密。 我从https://blog.xamarin.com/securing-web-requests-with-tls-1-2/ 知道 httpClient 会自动加密消息。

问候

【问题讨论】:

您使用的是 HTTPS/SSL 吗? @SushiHangover 在服务器上:是的 @ValterEkholm 然后放心,它是加密的。 @Todd Menier 我的意思是从 Android 应用程序发送到服务器的数据......现在我计划从 James 的答案中测试 Wireshark 我明白你的意思。如果您通过 HTTPS 调用端点,则整个有效负载将被加密。请阅读how HTTPS works 并了解一切(握手、证书交换、密钥交换、加密)都通过服务器和HttpClient 理解和实现协议为您处理。如果这只是出于好奇或说服自己的练习,那很好,但我不会花大量时间测试这些东西是否有效——它们确实有效。 :) 【参考方案1】:

如果您使用SSL 连接到您的服务器,您发送的数据将被加密。这可以通过在连接到您的服务器时简单地使用 https:// 前缀来实现,而不是使用常规的 http 前缀。

正如您所说,您在服务器上使用 SSL,我不会详细介绍实现它的细节,因为它在每个平台上都非常不同。对于将来阅读本文的任何人来说,如果预算有限,最好使用LetsEncrypt,因为它是免费的(尽管您必须经常更新您的证书)。

要验证数据是否已加密,您可以在 Android 模拟器中调试时使用名为 Wireshark 的程序。说明在wireshark 中非常清楚,但是在从您的Android 手机发送请求时,从wireshark 面板中选择域/IP 并查看来自该请求的信息。如果您正确使用 SSL,则应加密数据。

【讨论】:

以上是关于在 httpClient 中使用 POST 时如何确保数据被加密的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中使用 HTTPClient 以 JSON 格式发送 POST 请求?

使用 HttpClient 时如何在 HttpContent 中设置大字符串?

如何通过python twisted HTTPClient生成POST和GET请求?

C# HttpClient:如何在 POST 请求中发送查询字符串

如何使用HttpClient模拟浏览器GET POST

使用 HttpClient 的简单 POST