如果我从php脚本做shell_exec('mysqldump DATABASE_NAME')
,有危险吗?
有没有办法让它在Windows中运行?
我将从网页使用mysqldump进行数据库备份
运行时我还应该set_time_limit(0)
吗?
答案 0 :(得分:1)
是的,存在危险:如果数据库名称来自不受信任的源,则黑客可能会尝试在数据库名称中注入shell命令。例如:
$dbname = 'test; cat /etc/shadow';
可能用于从系统中获取用户名和加密密码(取决于系统)..
为避免这种情况,您应该使用escapeshellarg()
来引用数据库名称(以及可能的其他参数):
shell_exec('mysqldump ' . escapeshellarg($database_name));
set_time_limit()
毋庸置疑,您必须使用登录来保护页面。