Был неприятно поражён, когда при обращении к сайту (при этом был авторизован под веб-пользователем) по такому url http://<mydomain.ru>/index.php?id=1’ получил следующую ошибку:
« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’’, ’127.0.0.1’)’ at line 1 »
SQL: REPLACE INTO `modx`.`modx_active_users` (internalKey, username, lasthit, action, id, ip) values(-1, ’test_user’, ’1267636014’, ’998’, 1’, ’127.0.0.1’)
[Copy SQL to ClipBoard]
Неужели разработчики CMS никогда не слышали о SQL-инъекции и приведении типов данных? Может быть, это ещё не дыра, но всё равно неприятно. Как минимум, злоумышленник может получить некое представление о системе.
Можно ли как-то сделать глобальное приведение типов для всех id, вроде такого:
$id = intval($_GET['id'])
?
Под неавторизованным пользователем подобный запрос редиректит на главную страницу.