如何在 java 中创建安全的 AsyncHttpClient POST 请求
How to create a secure AsyncHttpClient POST request in java
我有一个 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 中,请求正文如下所示:
Line-based text data: application/x-www-form-urlencoded
email=myUserName&password=myPassword
我确实尝试环顾四周并在此处和其他地方搜索答案并阅读文档,但看起来有一种简单的方法可以做到这一点,我只是遗漏了一些东西..
感谢您的回答
如果您不想让任何人看到您的数据,您需要以某种方式对其进行加密。
以合理的安全级别实现此目的的最简单方法是使用 https 连接。
如果你只关心数据,你也可以尝试自己实现某种形式的端到端加密,但这很难做到。
总结:只需使用 https
使它更安全的事情:
- 添加传输加密 aka HTTPS
- 来自您计算机外部的攻击者什么也看不到
- 以哈希而非明文形式发送密码
- 在浏览器中查看预加密数据的攻击者仍然不知道您的密码。但仍然可以重新发送相同的请求以获得访问权限
- 每条短信一次性令牌
- ...
我有一个 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 中,请求正文如下所示:
Line-based text data: application/x-www-form-urlencoded email=myUserName&password=myPassword
我确实尝试环顾四周并在此处和其他地方搜索答案并阅读文档,但看起来有一种简单的方法可以做到这一点,我只是遗漏了一些东西..
感谢您的回答
如果您不想让任何人看到您的数据,您需要以某种方式对其进行加密。
以合理的安全级别实现此目的的最简单方法是使用 https 连接。 如果你只关心数据,你也可以尝试自己实现某种形式的端到端加密,但这很难做到。
总结:只需使用 https
使它更安全的事情:
- 添加传输加密 aka HTTPS
- 来自您计算机外部的攻击者什么也看不到
- 以哈希而非明文形式发送密码
- 在浏览器中查看预加密数据的攻击者仍然不知道您的密码。但仍然可以重新发送相同的请求以获得访问权限
- 每条短信一次性令牌
- ...