We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 7488
    • 9 Posts
    Был неприятно поражён, когда при обращении к сайту (при этом был авторизован под веб-пользователем) по такому 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'])
    ?

    Под неавторизованным пользователем подобный запрос редиректит на главную страницу.
      • 7488
      • 9 Posts
      P.S. И где можно отключить вывод вышеприведённой отладочной информации?
        • 7488
        • 9 Posts
        Баг закрался в сниппет авторизации assets/snippets/weblogin/weblogin.inc.php строки 106-109:

            $itemid = isset($_REQUEST['id']) ? $_REQUEST['id'] : 'NULL' ;$lasthittime = time();$a = 998;
            
            if($a!=1) {
                $sql = "REPLACE INTO $dbase.`".$table_prefix."active_users` (internalKey, username, lasthit, action, id, ip) values(-".$_SESSION['webInternalKey'].", '".$_SESSION['webShortname']."', '".$lasthittime."', '".$a."', ".$itemid.", '$ip')";