2

我有一个简单的 Java 服务器程序,我想知道这个简单的代码在不安全的网络上运行是否安全。

这是一些修改后的代码,它侦听端口并根据请求发送或获取消息。

        try ( 
            ServerSocket serverSocket = new ServerSocket(portNumber);
            Socket clientSocket = serverSocket.accept(); 
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream()));
            ) {

        String inputLine;
        String[] details = {"", "", ""};

        for (int index = 0; index < 3; index++) {
            if ((inputLine = in.readLine()) == null) break;
            details[index] = inputLine;
        }

        if (details[0] == 'send_message') { 
                            sendMessage();
                    }
                    else {
                            getMessage();
                    }


    } catch (IOException e) {
        debugPrint(e.getMessage());
    }

我问这个是因为我来自 C 背景,并且我想确保不会发生缓冲区溢出或者是否可能存在其他问题。

我认识到这可能是一个愚蠢的问题,但是我找不到任何关于它的信息。

4

1 回答 1

0

不,什么都不会发生。JVM 是一个沙箱,它会阻止基于套接字的类修改任何关键的东西,除非您自己从代码中调用它。在最坏的情况下,JVM 进程将直接关闭。

PS。JVM 中可能存在一些安全漏洞,但您无法保护自己免受这些漏洞的影响,如果发现这些漏洞,则会立即对 JVM 进行新的更新。

于 2013-11-05T19:13:55.403 回答