2010-08-25 2 views
0

У меня есть веб-форма для установки приложения, в котором пользователи отправляют туда учетные данные и сервер и т. Д. Я хочу взять эти данные и записать их в config.php, например:безопасный ввод пользовательского ввода в файл php

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

на лету на основе того, что они представили для включения в другие файлы позже. Проблема в том, что я не хочу писать данные, отправленные пользователем в файл php, что явно небезопасно. Как я могу сделать это безопасно?

+0

«Проблема в том, что я не хочу писать данные, отправленные пользователем в файл php», как бы вы это сделали? config.php - это решение, никто не может видеть вашу конфигурацию mysql из общедоступного URL-адреса. – Youssef

+0

Что здесь небезопасно? Разве этот пользователь уже не администратор? –

+0

да, но в том случае, если файл остается на сервере и доступен кому-то другому, я не хочу, чтобы люди могли произвольно писать код в файл php. –

ответ

0

Вы должны избежать пользовательского ввода и хранения данных как упорядоченные версии или массив (serialize), это даст вам хорошую отправную точку для она позволяет это безопасный способом

я знаю, что речь идет о создание голого файла PHP, но сериализация будет более безопасным и простым в использовании способом

ура

+0

не было бы безопасно просто выделять одинарные кавычки, потому что данные будут помещаться между одинарными кавычками при записи в файл? –

+0

Я считаю, что у вас будут данные из формы, и они не будут использоваться в качестве параметров для запроса, так же как и учетные данные для входа, поэтому я думаю, что даже экранирование кавычек таким образом не требуется (что, если пароль пользователя db содержит кавычки?) – canni

+0

нет, но что, если кто-то подает имя пользователя, например '; phpinfo(); $ x =' ..., тогда у нас есть код php, написанный в config.php –

1
+0

var_export для вывода «синтаксической строки», которая не является «чистым» способом хранения переменных (только мое мнение);) – canni

+0

@ Дариуш получил какой-то пример, чтобы показать, что, конечно же, нечисто? –

+0

по дизайну, код, созданный var_export, предназначен для его угасания, поэтому не очень безопасно, сериализуется по дизайну для хранения состояний переменных, вот почему я считаю его не «чистым» методом – canni

0

много известных частей программного обеспечения автоматической генерации ir config files таким образом. До тех пор, пока вы удаляете ненужные символы из строки и выполняете правильную проверку на входе формы, вы должны быть в порядке.

В данном конкретном случае простым способом проверить, что учетные данные MySQL безопасны, было бы просто попытаться подключиться к серверу с деталями до их записи в файл конфигурации.

Кроме того, как уже упоминалось ранее, сценарии установки должны быть заблокированы в любом случае и открыты только для доверенных пользователей!

Смежные вопросы