【问题标题】:How to create a secure AsyncHttpClient POST request in java如何在 java 中创建安全的 AsyncHttpClient POST 请求
【发布时间】:2015-12-24 16:55:22
【问题描述】:

我有一个 Swing 应用程序,它需要将登录详细信息发送到服务器(用 Node.js 编写)以进行验证。 到目前为止,我已经成功发送 http POST 请求并从服务器获取 JSON 对象,唯一的问题是,当使用 WireShark 嗅探时,我实际上可以看到请求正文,因此可以看到其中的密码和用户名,所以我猜那不是非常安全,我不介意服务器,我不太确定我想要 SSL 连接,因为我不介意对象返回安全性。 我的代码看起来像这样:

// Http members
private AsyncHttpClient asyncHttpClient = new AsyncHttpClient();

调用本身的函数如下所示:

    private void login(String username, String password) throws IOException, InterruptedException, ExecutionException {

    asyncHttpClient.preparePost(LOGIN_URL).
    addFormParam("email", username).
    addFormParam("password", password).
    execute(new AsyncCompletionHandler<Response>() {

        @Override
        public Response onCompleted(Response response) {
            // do something with the response object
            return response;
        }
    });
}

如您所见,这里没有详细说明。

在 WireShark 中,请求正文如下所示:

基于行的文本数据:application/x-www-form-urlencoded email=myUserName&password=myPassword

我确实尝试在这里和其他地方寻找答案并阅读文档,但看起来有一种简单的方法可以做到这一点,我只是错过了一些东西..

感谢您的任何回答

【问题讨论】:

  • 有人知道获取到服务器的 HTTPS 连接的过程是什么吗?
  • 这是不同的问题,由客户端和服务器部分划分。服务器部分更多与管理员相关,客户端部分将取决于服务器配置,但如果服务器将使用正确的证书和不推荐使用的密码套件,那么您需要在客户端进行更改 - 网址中的 http tp https。 Java 负责细节。
  • 那么您提供的是更改服务器端的配置...?
  • google '如何在我最喜欢的网络应用服务器上设置 https' 或提出不同的问题,评论部分以澄清当前问题,而不是新问题。

标签: java security httpclient wireshark asynchttpclient


【解决方案1】:

如果您不希望沿线的任何人看到您的数据,则需要以某种方式对其进行加密。

在合理的安全级别上实现这一点的最简单方法是使用 https 连接。 如果你只关心数据,你也可以尝试自己实现某种形式的端到端加密,但这很难做到。

总结:只需使用 https

【讨论】:

    【解决方案2】:

    使它更安全的事情:

    • 添加传输加密又名 HTTPS
      • 计算机外部的攻击者什么也看不到
    • 以散列形式发送密码,而不是明文
      • 您的密码对于在您的浏览器中查看预加密数据的攻击者来说仍然是未知的。但仍可以重新发送相同的请求以获取访问权限
    • 每条短信一次性令牌
    • ...

    【讨论】:

    • 感谢回复,如果我想使用HTTPS协议,我是不是也得在服务器端改一下?应该对我的代码进行哪些更改?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多