我有一個簡單的C++應用程序,用於在另一個用戶的特定目錄中執行perl腳本。從用戶提供的路徑中刪除前導「../」
wrapper my-perl-script.pl
我想確保用戶不會試圖欺騙C++應用程序到由前綴的具體目錄以外執行腳本「../」。什麼是最好/最簡單的方法來做到這一點?
這裏是我的包裝源的精簡版本。
int main (int argc, char *argv[])
{
/* set user here */
stringstream userCmd;
userCmd << "/path/to/scripts/";
for (int i = 1; i < argc; i++) {
if (i == 1) {
// remove instances of ../ from the first argument
userCmd << argv[i]
}
else {
// add user supplied arguments for perl script to command
userCmd << " " << argv[i];
}
}
/* use system to execute the user command */
return 0;
}
如果他們建立鏈接呢? –
如果他們預先設置了一個相對目錄呢?如果他們要求運行一個符號鏈接到任何他們喜歡的文件,該怎麼辦?如果他們寫的perl腳本熄滅並做它喜歡的事情呢?有可能你在這裏問錯了問題,所以你可以提供關於具體細節的任何澄清都會很好。 –
@MarkB但如果查克諾里斯突然決定通過徹底摧毀應用程序來欺騙應用程序呢? –