Перейти к содержанию
Форум поддержки пользователей VamShop

Редактирование заказа. ошибка MYSQL


Рекомендуемые сообщения

Версия магазина 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

вобщем все изменения не сохраняет.

В чем причина?

Ссылка на сообщение
Поделиться на другие сайты

На ваш страх и риск:

берите orders_edit.ph

и в трёх строках, где встречается "set text ="

строки типа: vam_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".$subtotal_text."'.....................

Меняете все двойные кавычки на одинарные и наоборот.

Будет работать - ваше счастье.

Ссылка на сообщение
Поделиться на другие сайты

Бред полный - вместо того, чтобы исправить очевидные ошибки - экранировать переменные, Бубубу предлагает запрещать что-то использовать. Совок полный. И некомпетенция.

Достаточно просто соблюдать обязательные элементарные правила - использовать фильтрацию всех данных во всех 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' ");

Ссылка на сообщение
Поделиться на другие сайты

Виноват, сам же и ошибся.

Файл /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' ");

Ссылка на сообщение
Поделиться на другие сайты

Просто приведи там всё в порядок. Нигде и никогда не должно быть 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 сооружу? И базу украду, а потом похерю?

Ну-ка, ну-ка, интересно.

Ссылка на сообщение
Поделиться на другие сайты

Можно из без ссылки на магазин. Достаточно теории, как в конкретный sql-запрос можно просунуть инъекцию и что-то там выудить.

Ссылка на сообщение
Поделиться на другие сайты

Так если есть доступ в админку есть, то и sql injection никакой не нужен, для этого есть Админка - Разное - Резервное копирование.

Ссылка на сообщение
Поделиться на другие сайты

:)

с админкой понятно, но использование get\post данных введенных пользователями встречается не только в админ части) тут не принципиально в каком файле была бы найдена такая ошибка

Ссылка на сообщение
Поделиться на другие сайты

Ну пример типа такого:

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, а просто отстраненный пример.

Ссылка на сообщение
Поделиться на другие сайты

Саша,

Так если есть доступ в админку есть

Разграничение доступа в админ - это элемент безопасности. Необходимый, но не достаточный. Это, так сказать, первый эшелон обороны.

Вспомни многочисленные взломы раннего оск, при закрытой админке. Доступ к админу подбирался, а далее - дыры в модулях админа (файл-менеджер, редактор main page и т.д.).

sql injection никакой не нужен, для этого есть Админка - Разное - Резервное копирование.

Ну да, отличный инструмент для хищения информации - может быть всё-таки стоит убрать в нём ссылку "Скачать файл"?

И, в отличии от sql injection, он не позволяет навредить - удалить базу, таблицу, изменить структуру, подменить номер кошелька и прочее.

Избавляться от sql injection нужно обязательно. Тем более, как ты видишь, несоблюдение элементарных правил гигены просто приводит к ошибкам эксплуатации скрипта.

Ссылка на сообщение
Поделиться на другие сайты

Избавляться от sql injection нужно обязательно.

Вы на предыдущей странице обещали просунуть инъекцию, скачать базу и удалить ее. С нетерпением все ждем конкретных разъяснений (хотя бы).

Ссылка на сообщение
Поделиться на другие сайты

Ну да, отличный инструмент для хищения информации - может быть всё-таки стоит убрать в нём ссылку "Скачать файл"?

И, в отличии от sql injection, он не позволяет навредить - удалить базу, таблицу, изменить структуру, подменить номер кошелька и прочее.

Избавляться от sql injection нужно обязательно. Тем более, как ты видишь, несоблюдение элементарных правил гигены просто приводит к ошибкам эксплуатации скрипта.

Удалил ссылку скачать файл.

Ссылка на сообщение
Поделиться на другие сайты

Вы на предыдущей странице обещали просунуть инъекцию, скачать базу и удалить ее. С нетерпением все ждем конкретных разъяснений (хотя бы).

Обещал я Саше, а не всем. Как "просунуть" инъекцию все и так знают, Вы сами приводили код. А вот составлять инъекцию здесь не буду. На счёт "скачать сразу всю базу" - это гипербола, остальное - думаю сами знаете.

Ссылка на сообщение
Поделиться на другие сайты

Я вообще тут одного человека как-то нанимал проверить на sql инъекции каталог, в каталоге, по идее, sql инъекций, быть не должно, т.е. для каталога правки уже были, там можно было через необъявленные переменные получить хэш пароля например, а так же в паре мест не было проверки вставляемых данных, но, опять же, как мне сказали, в каталоге таких проблем в текущей версии быть не должно.

А вот в админке, в админке да, есть потенциальные места ещё, но всё равно ведь, как я понимаю, нужен ведь доступ в админку, просто так не получится, строкой в браузере например.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...