Я читаю несколько книг по продвинутому PHP, и большую часть времени я нахожу код, подобный этому:
$classes = array ("MyClass1", "MyClass2");
if (!in_array ($_GET['class'], $classes))
throw new Exception ("Class not found!");
$params = $_GET;
$obj = new $_GET['class'];
if (!method_exists ($_GET['method'], $obj)
throw new Exception ("Method not found!");
echo $obj->{$_GET['method']}();
В книге, где я нахожу этот код, автор всегда упоминает, что этот код небезопасен для производственных сред, и необходимо проверить имя класса.
Мой вопрос: если проверяется имя класса, оно существует в массиве (я добавил это, это не было в примерах книги), какие соображения безопасности я должен принять больше? Имя класса будет выведено, поэтому фильтрация XSS не имеет особого смысла. Также имя класса не попадет в базу данных, поэтому фильтрация SQL-инъекций не нужна.
Заранее спасибо за все ваши ответы.