2016-04-14 6 views
0

я в том числе удаленный файл с file_get_contents() как так:Проверка на наличие уязвимостей, включая удаленный файл, с параметром, в PHP скрипт

function checkData($serial) { 
    file_get_contents("http://example.com/page.php?somevar=".$serial."&check=1"); 
    return $http_response_header; 
} 

Эта отдаленная страница выполняет некоторые основные манипуляции с данными, и выглядит серийный номер, в базе данных (вход дезинфицирован, и я использую PDO, поэтому мне не нужно беспокоиться о SQL-инъекциях), а затем возвращает значение в заголовке ответа. Вход $serial является параметром get - так полностью контролируется пользователем. Мне интересно, есть ли какие-либо входы в эту функцию, которые приведут к нежелательному поведению, например, получение содержимого другой страницы, кроме желаемой.

Заранее благодарен.

+0

Если получить значение '$ serial' просто делая' $ серийник = $ _GET [ «последовательный»] ', а затем передать, что прямо в' checkData', я был бы удивлен, если это не может быть взломан каким-то образом (не то, что я точно знаю) – jDo

+0

По крайней мере, вы должны 'urlencode()' '' 'аргумент $ serial' ... – arkascha

+0

Сделайте несколько проверок на вашей стороне, когда будет получен серийный номер, если это не вход, который вы хотите иметь, вы можете, например, прекратить дальнейшее выполнение вашего скрипта, ответив на что-то вроде: «Неизвестные данные» или «Эти данные недействительны». – Jer

ответ

1

Если переменная $ serial всегда будет числовой, вы можете применить intval() вокруг значения, чтобы гарантировать, что значение всегда будет числом и не содержит других нечисловых данных для обхода пути/RFC и т. Д.

EG

file_get_contents("http://example.com/page.php?somevar=".intval($serial)."&check=1"); 

В качестве альтернативы вы можете использовать preg_replace для удаления нежелательных символов, если вам нужны и альфа-символы.

http://php.net/manual/en/function.preg-replace.php