首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用附加代码的SSLSocket通信安全吗?

使用附加代码的SSLSocket通信安全吗?
EN

Stack Overflow用户
提问于 2014-07-12 02:10:01
回答 1查看 182关注 0票数 0

我用Sockets开发了一个聊天服务器和客户端,一切都很好,直到我在网上看到普通的Socket通信容易受到攻击。谷歌一段时间后,我看到了此页,它显示了一个示例SSLServerSocketSSLSocket实现(下面的代码)。

如果遵循以下代码中的步骤,我想知道我的服务器和客户端之间的通信是否安全。

服务器代码

代码语言:javascript
复制
class EchoServer {
  public static void main(String[] args) throws IOException {
    SSLServerSocket sslServerSocket = null;
    try {
      SSLServerSocketFactory sslServerSocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
      sslServerSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(9999);
      SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
      PrintWriter out = new PrintWriter(sslSocket.getOutputStream(),true);
      BufferedReader in = new BufferedReader(new InputStreamReader(sslSocket.getInputStream()));
      String inputLine;
      while ((inputLine = in.readLine()) != null) {
        System.out.println(inputLine);
        out.println(inputLine);
      }
    } finally {
      if (sslServerSocket != null) {
        try {
          sslServerSocket.close();
        } catch (IOException x) {
          // handle error
        }
      }
    }
  }
}

客户端代码

代码语言:javascript
复制
class EchoClient {
  public static void main(String[] args) throws IOException {
    SSLSocket sslSocket = null;
    try {
      SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
      sslSocket = (SSLSocket) sslSocketFactory.createSocket("localhost", 9999);
      PrintWriter out = new PrintWriter(sslSocket.getOutputStream(), true);
      BufferedReader in = new BufferedReader(new InputStreamReader(sslSocket.getInputStream()));
      BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
      String userInput;
      while ((userInput = stdIn.readLine()) != null) {
        out.println(userInput);
        System.out.println(in.readLine());
      }
    } finally {
      if (sslSocket != null) {
        try {
          sslSocket.close();
        } catch (IOException x) {
          // handle error
        }
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-12 03:03:20

您应该通过HandshakeCompletionListener或SSLSession获得对等证书,以验证您正在与您认为正在交谈的主机进行交谈。除此之外,从安全性的角度来看,您的代码是可以的。

但是,您也应该意识到,您不应该通过网络使用PrintWriter,因为它会吞噬异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24708948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档