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