Здравствуйте интересует вопрос. При сортировке страниц например в приложении сайт. Происходит ли экранирование данных при обращении к базе данных?
Объясню к чему задан вопрос.
Создал приложение отправил на модерацию - забанили из за того что сортировка происходит без экранирования данных.
$data = waRequest::post('data');
$data = json_decode($data);
$readbleArray = $this->parseJsonArray($data);
$i=0;
foreach($readbleArray as $d){
$i++;
$model = new appMenuFieldsModel();
$model->query("UPDATE app_menu_fields Set parent_id = '".$d['parentID']."', sort = '".$i."' where id = '".$d['id']."' ");
}
Так вот хотелось бы услышать мнение неужели это экранировать в этом случае архиважно и архинужно.
+ учитывая то что все переменные которые заносятся в базу данных являются числовыми id.
По данному куску уверенность только в $i.
Нет информации что делает parseJsonArray, поэтому можно допустить что просто формирует массив, который можно сделать и json_decode.
что мешает передать в $d['parentID'] инъекцию вида
1'; UPDATE wa_contacts SET password = "password"; UPDATE apps_menu Set parent_id='1
Ну и конечно давайте поговорим о
" Стоит и в описании страницы плагина в магазине описать подробности, назначения, варианты использования. "
Во первых не плагин а приложение.
Во вторых -
Приложение «Сайт» — это системное приложение фреймворка Вебасист, предоставляющее необходимые инструменты для построения сайтов на основе нескольких приложений:
— управление маршрутизацией (роутингом),— редактор шаблонов дизайна,
— информационные страницы,
— управление темами дизайна,
— файловый менеджер,
— многосайтовость.
Где тут - описаны подробности, назначения, варианты использования.
"Для чего используется Ссылка меню в настройках каждого пункта, как ее нужно указывать? "
Вот скажите мне пожалуйста для чего же используется ссылка в меню?
Ну наверно для того что бы куда либо вести.
Уважаемые товарищи из webasyst я не идеальный программист и не претендую на лавры , но давайте как то урегулируем работу проверяющего органа. Так как некоторый баны просто доходят до абсурда!
Алексей если смотреть на кусок кода то конечно уверенности нет.
Но извините что утрирую если выдергивать из Библии контекст можно Майн Капф собрать.
$d['id'] - это запись в базе данных id' => array('int', 11, 'null' => 0, 'autoincrement' => 1), она не может быть угрозой.
$d['parentID'] -это запись дочерней страницы которая так же берется из значения id страницы.
Гена, ещё инициализацию модели за цикл вынести :)
Вы не то смотрите. Не важно какая структура у вашей таблицы, проблема в том что ваш код позволяет изменять другие таблицы.
Алексей просветите пожалуйста каким образом ?
Eugen Nichikov, Да ! Просто смутила строка запроса, ее и поправил)
А вообще для таких целей используют SortableModel.....
Гена Рыжов - мое почтение )
Что мне мешает отправить POST-ом данные parentID которые будут не числом? Чтобы они в таком же виде попали на выполнение в модель.
Не совсем Вас понимаю. Каким образом вы отправите post parentID эта переменная назначается если пункт меню является дочерним.
пункт меню1 => id=1, parent_id =0
пункт меню2 => id=2, parent_id =0
перемещаем пункт меню2 что бы получилось вложенность и получаем
пункт меню1 => id=1, parent_id =2
пункт меню2 => id=2, parent_id =0
и идет перебор пунктов с проверкой if (parent_id) .... esle .....
Вы же знаете что через JS я могу отправить POST на любой адрес с любыми данными?
Вне зависимости что вы строите дизайном.
Блин Алексей Вы же в курсе что "русские хакеры" сорвали выборы в США.
Или Вы действительно считаете что потенциальные пользователи установившие приложение вместо того что бы им пользоваться будет заниматься непонятно чем ?
Хорошо оставим этот вопрос так как все сводиться к тому, что лучше перебдеть чем недобдеть )))
Не было бы никаких проблем, если б вы использовали штатный инструментарий , а не город ли б огород из своих sql запросов.
Павел Трофимов например ?
$model->update()
Павел Трофимов я с Вами полностью согласен моя спешка в купе с безграмотностью доставляют много проблем. И по поводу $model->update() согласен.
Всем огромное спасибо что уделяете время. Алексей Вам отдельная благодарность.
Гена Рыжов тридцать три благодарности. )) Сам знаешь за что. С меня простава.
С тебя часть прибыли с продаж приложения, так что пиши еще, помогу!