GROL 0 Опубликовано 30 марта, 2010 Жалоба Share Опубликовано 30 марта, 2010 Версия магазина 1.56. После изменения заказа при нажатии на сохранить выдает "Ошибку MYSQL" 30/03/2010 18:03:15 | 1064 - 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 '648,60 грн.', value = '18648.6000' where orders_id = '4' and class = 'ot_subt' at line 1 | update orders_total set text = ' 18'648,60 грн.', value = '18648.6000' where orders_id = '4' and class = 'ot_subtotal' | /admin/orders_edit.php?action=save_order вобщем все изменения не сохраняет. В чем причина? Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 30 марта, 2010 Жалоба Share Опубликовано 30 марта, 2010 У вас разделитель тысяч - апостроф: '. Смените его на другой и радйтесь. Вот эти тоже не надо: " ` Ссылка на сообщение Поделиться на другие сайты
GROL 0 Опубликовано 30 марта, 2010 Автор Жалоба Share Опубликовано 30 марта, 2010 ) как все просто. А никак нельзя поставить апостроф? Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 30 марта, 2010 Жалоба Share Опубликовано 30 марта, 2010 куда поставить? Ссылка на сообщение Поделиться на другие сайты
GROL 0 Опубликовано 30 марта, 2010 Автор Жалоба Share Опубликовано 30 марта, 2010 В разделитель тысяч. (вопрос конечно глупый. написано ж сверху: нельзя) но если надо. Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 30 марта, 2010 Жалоба Share Опубликовано 30 марта, 2010 На ваш страх и риск: берите orders_edit.ph и в трёх строках, где встречается "set text =" строки типа: vam_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".$subtotal_text."'..................... Меняете все двойные кавычки на одинарные и наоборот. Будет работать - ваше счастье. Ссылка на сообщение Поделиться на другие сайты
GROL 0 Опубликовано 30 марта, 2010 Автор Жалоба Share Опубликовано 30 марта, 2010 спасибо. Будем пробовать. Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 30 марта, 2010 Жалоба Share Опубликовано 30 марта, 2010 Попробуете - сообщите результат. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 30 марта, 2010 Жалоба Share Опубликовано 30 марта, 2010 Бред полный - вместо того, чтобы исправить очевидные ошибки - экранировать переменные, Бубубу предлагает запрещать что-то использовать. Совок полный. И некомпетенция. Достаточно просто соблюдать обязательные элементарные правила - использовать фильтрацию всех данных во всех sql-запросах! /admin/orders_edit.php это шедевр в плане безопасности! Саша! Просто приведи там всё в порядок. Нигде и никогда не должно быть ql-запросов $product_query = vam_db_query("select p.products_model, p.products_tax_class_id, pd.products_name from ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_id = '"[b].$_POST['products_id'].[/b]"' and pd.products_id = p.products_id and pd.language_id = '".$_SESSION['languages_id']."'"); Хочешь я тебе только на этом примере несколько sql-injection сооружу? И базу украду, а потом похерю? Все данные должны фильтроваться!!!! Не только на входе, но и при конкретных применениях. to GROL. Конкретно по данной теме. Файл /admin/orders_edit.php. Искать vam_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".$subtotal_text."', value = '".$subtotal_final."' where orders_id = '".$_POST['oID']."' and class = 'ot_subtotal' "); Заменить на vam_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".vam_db_input($subtotal_text)."', value = '".vam_db_input($subtotal_final)."' where orders_id = '".$_POST['oID']."' and class = 'ot_subtotal' "); Ссылка на сообщение Поделиться на другие сайты
Bububu 0 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 Совок полный. А за совок ты мне ответишь. >:( Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 Виноват, сам же и ошибся. Файл /admin/orders_edit.php. Искать vam_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".$subtotal_text."', value = '".$subtotal_final."' where orders_id = '".$_POST['oID']."' and class = 'ot_subtotal' "); Заменить на vam_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".vam_db_input($subtotal_text)."', value = '".vam_db_input($subtotal_final)."' where orders_id = '".(int)$_POST['oID']."' and class = 'ot_subtotal' "); Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 Спасибо Андрей, внёс исправление в текущий код. Ссылка на сообщение Поделиться на другие сайты
Midas 0 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 Просто приведи там всё в порядок. Нигде и никогда не должно быть ql-запросов $product_query = vam_db_query("select p.products_model, p.products_tax_class_id, pd.products_name from ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_id = '"[b].$_POST['products_id'].[/b]"' and pd.products_id = p.products_id and pd.language_id = '".$_SESSION['languages_id']."'"); Хочешь я тебе только на этом примере несколько sql-injection сооружу? И базу украду, а потом похерю? Ну-ка, ну-ка, интересно. Ссылка на сообщение Поделиться на другие сайты
mosquito 0 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 +1 интересно) пример sql-injection и ссылку от кого то на какой то магазин.. потестить :D Ссылка на сообщение Поделиться на другие сайты
Midas 0 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 Можно из без ссылки на магазин. Достаточно теории, как в конкретный sql-запрос можно просунуть инъекцию и что-то там выудить. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 Так если есть доступ в админку есть, то и sql injection никакой не нужен, для этого есть Админка - Разное - Резервное копирование. Ссылка на сообщение Поделиться на другие сайты
mosquito 0 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 :) с админкой понятно, но использование get\post данных введенных пользователями встречается не только в админ части) тут не принципиально в каком файле была бы найдена такая ошибка Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 марта, 2010 Жалоба Share Опубликовано 31 марта, 2010 Что-то не понял о чём уже речь. Пример можно какой-нибудь. Ссылка на сообщение Поделиться на другие сайты
Midas 0 Опубликовано 1 апреля, 2010 Жалоба Share Опубликовано 1 апреля, 2010 Ну пример типа такого: select * from table1 where id=$_GET['id'] Сюда спокойно просовывается инъекция, т.к. в параметр id GET-запроса можно вставить любую строку, например "1 union select * from users where username='admin' and password(password) like '0%'", а потом, перебирая символы в like (от 0 до f и потом переходим к следующему разряду) и наблюдая за выводом содержимого на странице (есть/нет), можно определить хэш пароля админа. После чего расшифровать пароль и получить полный доступ. Это только пример. Конечно, тут крайне желательно быть знакомым с движком. Это не про Vam Shop, а просто отстраненный пример. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 1 апреля, 2010 Жалоба Share Опубликовано 1 апреля, 2010 Саша, Так если есть доступ в админку есть Разграничение доступа в админ - это элемент безопасности. Необходимый, но не достаточный. Это, так сказать, первый эшелон обороны. Вспомни многочисленные взломы раннего оск, при закрытой админке. Доступ к админу подбирался, а далее - дыры в модулях админа (файл-менеджер, редактор main page и т.д.). sql injection никакой не нужен, для этого есть Админка - Разное - Резервное копирование. Ну да, отличный инструмент для хищения информации - может быть всё-таки стоит убрать в нём ссылку "Скачать файл"? И, в отличии от sql injection, он не позволяет навредить - удалить базу, таблицу, изменить структуру, подменить номер кошелька и прочее. Избавляться от sql injection нужно обязательно. Тем более, как ты видишь, несоблюдение элементарных правил гигены просто приводит к ошибкам эксплуатации скрипта. Ссылка на сообщение Поделиться на другие сайты
Midas 0 Опубликовано 1 апреля, 2010 Жалоба Share Опубликовано 1 апреля, 2010 Избавляться от sql injection нужно обязательно. Вы на предыдущей странице обещали просунуть инъекцию, скачать базу и удалить ее. С нетерпением все ждем конкретных разъяснений (хотя бы). Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 1 апреля, 2010 Жалоба Share Опубликовано 1 апреля, 2010 Ну да, отличный инструмент для хищения информации - может быть всё-таки стоит убрать в нём ссылку "Скачать файл"? И, в отличии от sql injection, он не позволяет навредить - удалить базу, таблицу, изменить структуру, подменить номер кошелька и прочее. Избавляться от sql injection нужно обязательно. Тем более, как ты видишь, несоблюдение элементарных правил гигены просто приводит к ошибкам эксплуатации скрипта. Удалил ссылку скачать файл. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 1 апреля, 2010 Жалоба Share Опубликовано 1 апреля, 2010 Вы на предыдущей странице обещали просунуть инъекцию, скачать базу и удалить ее. С нетерпением все ждем конкретных разъяснений (хотя бы). Обещал я Саше, а не всем. Как "просунуть" инъекцию все и так знают, Вы сами приводили код. А вот составлять инъекцию здесь не буду. На счёт "скачать сразу всю базу" - это гипербола, остальное - думаю сами знаете. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 1 апреля, 2010 Жалоба Share Опубликовано 1 апреля, 2010 Я вообще тут одного человека как-то нанимал проверить на sql инъекции каталог, в каталоге, по идее, sql инъекций, быть не должно, т.е. для каталога правки уже были, там можно было через необъявленные переменные получить хэш пароля например, а так же в паре мест не было проверки вставляемых данных, но, опять же, как мне сказали, в каталоге таких проблем в текущей версии быть не должно. А вот в админке, в админке да, есть потенциальные места ещё, но всё равно ведь, как я понимаю, нужен ведь доступ в админку, просто так не получится, строкой в браузере например. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения