我需要做些什么才能正确清理/转义正在输入到编程SSH命令中的参数?进入SSH命令的Sanitize/escape参数
例如,路径参数 -
public boolean exists(String path) {
try {
ChannelExec c = (ChannelExec) session.openChannel("exec");
//Here *** would like to be sure that the path is completely valid
c.setCommand("[ -f " + path + " ] && echo \"File exists\" || echo \"File does not exists\"");
InputStream in = c.getInputStream();
c.connect();
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(in, out);
in.close();
out.close();
System.out.println(out.toString("UTF-8"));
c.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// TODO Auto-generated method stub
return false;
}
其原因是不安全是该路径参数可以来自用户的上传。恶意用户可能会在技术上上载带有无效文件名的文件。虽然我可以事先检查(我正在做这个),但我也想在这里检查一下。
取决于你的意思是“无效”的东西,我想。 –
恶意。确保它本身没有执行“SSH注入”... –
只是反斜杠不是“正常”的所有内容,所以它肯定是一个文件名,我猜?特别是分号,当然。 –