如何在java

时间:2015-12-24 08:17:48

标签: java security httpclient wireshark asynchttpclient

我有一个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   电子邮件=名为myUsername&安培;密码= MYPASSWORD

我确实试着环顾四周,在这里和其他地方搜索答案并阅读文档,但看起来有一种简单的方法可以做到这一点,我只是遗漏了一些东西..

感谢您的回答

2 个答案:

答案 0 :(得分:1)

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

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

摘要:只需使用https

即可

答案 1 :(得分:0)

使事情更安全的事情:

  • 添加传输加密即HTTPS
    • 来自计算机外部的攻击者看不到任何内容
  • 将密码作为哈希发送,而不是明文
    • 攻击者在浏览器中观看预先加密的数据时,您的密码仍未知。但仍然可以重新发送相同的请求来获取访问权
  • 每个短信一次性令牌
  • ...