我有一个简单的 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;
}