2011-07-21 2 views
0

как создать и записать файл с помощью параметров URL-адресапараметров URL для файла

, например: web.com/index.php?name=test.txt?input=halloworld

Имя файла должно быть test.txt и его содержимое должно быть halloworld.

это то, что я до сих пор

if(isset($_GET['name'])) 
{ 

    $File = $_GET['name']; 
    $Handle = fopen($File, 'w'); 
    $Data = $_GET['input']; 
    fwrite($Handle, $Data); 
    fclose($Handle); 
} 

выходного файла = test.txt? Вход = halloworld, что неправильно

спасибо.

+2

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

+0

Я не совсем уверен, правильно понял я. Я использую скрипт для генерации xml-файлов на сервере в том же каталоге. так что может пойти не так? –

+0

Что делать, если я передаю 'web.com/index.php?name=evil.php&input= Fabio

ответ

3

Ваша ошибка: вместо & в свой адрес, он должен быть web.com/index.php?name=test.txt&input=halloworld

Это сказал, что вы не должны никогда делать такие вещи, как это, потому что это крайне опасно. Таким образом, вы подвергаете свой сервер воздействию любых атак или сбоев. Злоумышленник может легко написать php-файл на вашем веб-сервере и взять под свой контроль его.

Имейте это в виду.

Edit: я написал в вопросе комментарий, но я переписать его здесь, что, если злоумышленник вызвать скрипт с этим параметрами:

web.com/index.php?name=evil.php&input=<?php exec('rm -rf /'); 

, а затем запросить URL-адрес

web.com/evil.php 

Ваш файловая система будет уничтожена (если у пользователя есть привилегии для этого). Другие виды атак могут быть более тонкими, можно ввести php shell на ваш сервер и т. Д.

+1

некоторые перспективы пожалуйста! использование бензопилы для чистки зубов чрезвычайно опасно. Это просто глупо :) – tomfumb

+0

Ну да, вы абсолютно правы. Спасибо за совет! –

1

web.com/index.php?name=test.txt?input=halloworld не является правильной строкой запроса. учитывайте:

web.com/index.php?name=test.txt&input=halloworld 
+0

да действительно, огромная ошибка –

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