1
我正在设置一个postwwwacct脚本来设置一个WordPress预安装的预安装的内容,如果在WHM中创建一个帐户时选择了某个计划。这个postwwwacct脚本安全/理想吗?
这个WordPress安装基本上是从默认的一个克隆的,我可以根据默认需求的变化更改/更新。
我可能是一个中级PHP开发人员,但我是新来的这种根级hashbang PHP的东西,所以我想知道的是,我写的脚本是否安全,是否有是任何明显的事情,应该做得更好/不同。
下面是我得到了什么:
#!/usr/bin/php -q
<?php
/**
* This script will automatically set up a mirror of default.example.com in a newly created account
**/
// Set up our variables to be usable by PHP
$opts = array();
$argv0 = array_shift($argv);
while(count($argv)) {
$key = array_shift($argv);
$value = array_shift($argv);
$opts[$key] = $value;
}
// Only do it if the plan is "WP Unlimited"
if($opts['plan'] !== "WP Unlimited") exit();
// Set up a few variables
$db_user = 'root';
$db_pass = 'ROOTPASSWORD';
$db_create = $opts['user'] . '_wp';
// Copy files recursively from /home/default/public_html/
exec("cp -R /home/default/public_html/* /home/{$opts['user']}/public_html; chown -R {$opts['user']}:{$opts['user']} /home/{$opts['user']}/public_html/*");
// Set up database
$conn = mysql_connect('localhost', $db_user, $db_pass);
mysql_query("CREATE DATABASE $db_create", $conn);
// Dump data from default.example.com into new DB
exec("mysqldump -h localhost -u $db_user -p$db_pass default_wp | mysql -h localhost -u $db_user -p$db_pass $db_create");
// Use WordPress' built-in configuration file maker to write config file
$_POST['dbname'] = $db_create;
$_POST['uname'] = $opts['user'];
$_POST['pwd'] = $opts['pass'];
$_POST['dbhost'] = 'localhost';
shell_exec("/home/{$opts['user']}/public_html/wp-admin/setup-config.php?step=2");
?>
我问这里一方面是因为我不能确定有关shell_exec()
S在脚本中的安全性,还因为我要为了创建帐户以测试这一点,我宁愿避免任何我可能犯的愚蠢错误,并且在我的服务器上没有十亿假帐户:)
谢谢!
完全可能有一个安全的'shell_exec'调用。没有必要担心伤害。当然,一定要小心,但不能保证是危险的。 – ceejayoz 2011-05-12 01:39:54
我说“不安全”,并不是说它有保证是危险的。也有很多网络主机禁用诸如exec,system ETC之类的命令的原因。 – jini 2011-05-12 15:04:20
不要说“任何有shell命令的东西......不安全”,那么。不使用用户提交的数据的Shell命令是安全的,并且使用用户提交的数据的shell命令在安全构建和转义的情况下是安全的。 – ceejayoz 2011-05-12 15:10:01