简单java套接字安全注意事项

简单java套接字安全注意事项,java,sockets,Java,Sockets,我有一个简单的Java服务器程序,我想知道这个简单的代码在不安全的网络上运行是否安全 这是一些修改过的代码,它侦听端口,根据请求发送或获取消息 try ( ServerSocket serverSocket = new ServerSocket(portNumber); Socket clientSocket = serverSocket.accept(); PrintWriter out = new P

我有一个简单的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());
    }
试试(
ServerSocket ServerSocket=新的ServerSocket(端口号);
Socket clientSocket=serverSocket.accept();
PrintWriter out=新的PrintWriter(clientSocket.getOutputStream(),true);
BufferedReader in=新的BufferedReader(新的InputStreamReader(clientSocket.getInputStream());
) {
字符串输入线;
字符串[]详细信息={“”,“”};
对于(int-index=0;index<3;index++){
如果((inputLine=in.readLine())==null)中断;
详细信息[索引]=输入行;
}
如果(详细信息[0]=“发送消息”){
sendMessage();
}
否则{
getMessage();
}
}捕获(IOE异常){
debugPrint(如getMessage());
}
我问这个问题是因为我来自C语言背景,我想确保缓冲区不会溢出,或者是否可能存在其他问题


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

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


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

Java没有像C一样的缓冲区溢出。如果某个坏客户端只是垃圾邮件数据,您可能仍然会得到
OutOfMemoryException
等。(从
readLine
获得的行可能是无限的)btw将
details[0]==“send_message”
替换为
“send_message”。等于(details[0])
,因为您无法比较
=
字符串。