XSS и file_get_contents?

0

Мой url похож на page.php?path=content/x/y/z/aaa.md Является ли следующий код php XSS безопасным?

include "Parsedown.php";

function path_purifier($path) {
  if(substr($path, 0, 8) !== "content/")
    return null;
  if (strpos($path,'..') !== false)
    return null;
  return "./" . $path;
}

$parsedown = new Parsedown();
$path = $_GET['path'];
$path = path_purifier($path);
echo $parsedown->text(file_get_contents($path));

Спасибо за внимание

Теги:
file-get-contents
xss

1 ответ

0
Лучший ответ

Да, выглядит достаточно безопасно, но все же не идеально. Вам также нужно вызвать is_file() и убедиться, что он возвращает true, прежде чем вы вызове file_get_contents(). Кроме того, чтобы сделать его еще более безопасным, вы можете реализовать защиту CSRF поверх нее.

Кроме того, имейте в виду, что некоторые хостинг-провайдеры не допускают относительных путей. Поэтому, если на вашем локальном компьютере может работать такой путь, как '/content/x/y/file.md', имейте в виду, что на некоторых хостерах этого не произойдет. Поэтому вам лучше использовать абсолютные пути, такие как __DIR__. '/content/x/y/file.md' __DIR__. '/content/x/y/file.md'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню