我在网上寻找关于这个帖子的信息。如果我理解,使用https或wss,需要SSl证书吗?这些方法能保证数据交换的安全?
我看了一份关于RSA的文件。看起来很好,而且很安全。但是,我怎样才能实现这些呢?我发现了一个叫“密码”的酒吧包裹。很好吗?
实际上,对于服务器端,我的代码如下所示:
import 'dart:io';
import 'dart:async';
ft_handle_error(error) => print("The are on error $error");
handle_msg(String msg) => print("Message received : $msg");
void ft_server_html(HttpRequest request)
{
if (request.uri.path == '/')
{
request.response.statusCode = HttpStatus.ACCEPTED;
request.response.headers.contentType = new ContentType('text', 'plain');
request.response.write('Hello toi !');
}
else
request.response.statusCode = HttpStatus.BAD_REQUEST;
request.response.close();
}
void ft_ws_server(HttpRequest request)
{
if (request.uri.path == '/ws')
{
WebSocketTransformer.upgrade(request)
.then((socket)
{
socket.listen(handle_msg);
socket.add("Recu");
})
.whenComplete(request.response.close);
}
else
request.response.close();
}
void main()
{
HttpServer.bind('127.0.0.1', 8080)
.then((server) => server.listen(ft_server_html))
.catchError(ft_handle_error);
HttpServer.bind('127.0.0.1', 4040)
.then((ws_server) => ws_server.listen(ft_ws_server))
.catchError(ft_handle_error);
}和客户端
import 'dart:html';
void main()
{
WebSocket wss;
wss = new WebSocket('ws://127.0.0.1:4040/ws');
wss.onOpen.listen((_) => wss.send("From browser"));
wss.onMessage.listen((msg) => print("Msg received : ${msg.data}"));
}它很好用,但我觉得还不够安全。再次感谢你的帮助。
发布于 2014-03-24 16:35:58
您可以创建一个自签名证书:https://devcenter.heroku.com/articles/ssl-certificate-self
使用它,数据将被保护免受偷窥者的攻击。除非有人偷了你的私钥,否则小偷就能破解通讯。
但是,由于证书不是由有效的CA签名的,所以您的客户无法确定是否连接到他认为的位置,正如@SLaKs所指出的那样,enablin MITM攻击。这就是,有人可以坐在你的客户和服务器之间,然后读取所有的东西。
因此,如果您的客户一旦意识到这一点,就不想为证书付费,并且热衷于接受浏览器每次连接时都会发出有关CA签名的警告,您可以使用自签名的证书。
https://stackoverflow.com/questions/22597484
复制相似问题