我需要做些什麼才能正確清理/轉義正在輸入到編程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注入」... –
只是反斜槓不是「正常」的所有內容,所以它肯定是一個文件名,我猜?特別是分號,當然。 –