2010-08-25 101 views
0

我有一个安装应用程序的Web窗体,用户在那里提交sql证书和服务器等。我想将这些数据写入config.php中,如下所示:安全地将用户输入写入php文件

$_MYSQL['server'] = ''; 
$_MYSQL['username'] = ''; 
$_MYSQL['password'] = ''; 
$_MYSQL['database'] = ''; 

基于他们提交以后包含在其他文件中的内容。问题是我不想将用户提交的数据写入到一个php文件中,那显然是不安全的。我怎样才能安全地做到这一点?

+0

“问题是我不想将用户提交的数据写入到一个php文件中”然后你会怎么做?一个config.php是解决方案,没有人能从公共URL中看到你的mysql配置。 – Youssef 2010-08-25 09:51:19

+0

什么是不安全的?这个用户不是管理员吗? – 2010-08-25 09:52:38

+0

是的,但在文件仍然在服务器上,并且可以被其他人访问的情况下,我不希望人们能够随意地将代码写入PHP文件。 – 2010-08-25 09:55:01

回答

0

你要逃跑用户输入和存储数据的序列化版本或阵列(serialize)这将会给您一个安全的方式

我知道makeing一个很好的起点,这个问题是关于创建裸PHP文件,但序列化将更加安全和易于使用的方式

欢呼

+0

只是删除单引号是不安全的,因为写入文件时数据将放在单引号之间? – 2010-08-25 09:52:49

+0

我认为你将从表单获得这些数据,并且它不会像查询凭证那样用作查询的参数,所以我认为即使以这种方式转义引号也不是必需的(如果用户的db密码包含引号,该怎么办?) – canni 2010-08-25 09:55:47

+0

不,但如果有人提交用户名像'; phpinfo(); $ x ='...那么我们有php代码写入config.php – 2010-08-25 09:57:31

1
+0

var_export用于输出“可解析字符串”,这不是“干净”的方式来存储变量(只是我的意见);) – canni 2010-08-25 10:02:12

+0

@Dariusz有任何示例来显示什么是肯定不洁的? – 2010-08-25 10:11:01

+0

由设计,由var_export生成的代码是用于评估它,所以不是很安全,序列化的设计是为了存储变量的状态,这就是为什么我认为它不是“干净”的方法 – canni 2010-08-25 10:26:18

0

的软件自动生成的知名作品大量以这种方式配置文件。只要你从字符串中删除不需要的字符,并对表单输入执行适当的验证,你应该会很好。

在这个特定的实例中,检查MySQL凭据是否安全的简单方法是在将它们写入配置文件之前,简单地尝试连接到服务器。

此外,如前所述,安装脚本无论如何都应该被锁定,并且首先向可信用户开放!