Я использую этот код поверх моего PHP-файла для загрузки кэшированных файлов, и меня беспокоит, достаточно ли он безопасен:
//quick! load from cache if exists!
if (is_file('cache/'.($cachefile=basename('/',$_GET['f']))))
{
header('content-type: text/css');
require('cache/'.$cachefile);
die(); //ALL OK, loaded from cache
}
РЕДАКТИРОВАТЬ: Я также хотел бы знать, если это не так, как это можно использовать и как переписать его безопасным способом.
РЕДАКТИРОВАТЬ 2: Я редактировал код из предыдущего кода, я не знаю, как я мог подумать, что is_file
будет фильтровать плохие пути>. <</p>
РЕДАКТИРОВАТЬ 3: Еще раз изменил его, поэтому он использует basename()
вместо end(explode())
, а также изменил включение с повторения кода на присвоение значения переменной во время первого сравнения (или проверки файла).
Я никогда не просто include($_GET)
, но сегодня я почему-то думал, что is_file
отфильтрует пути, которые могут повредить моей системе. Я не знаю как.
Спасибо