Создание ноды внешним post запросом

Главные вкладки

Аватар пользователя linex14 linex14 30 ноября 2010 в 22:01

Необходимо реализовать возможность создания ноды со страницы другого сайта (передаются параметры Заголовок и Содержание).

Тело формы

<form action="site/node/add/page" accept-charset="UTF-8" method="post" id="node-form" enctype="multipart/form-data" target="_blank">
<input type="hidden" name="form_id" id="edit-page-node-form" value="page_node_form">
<input type="hidden" name="form_token" id="edit-page-node-form-form-token" value="61d21a587b96639c7750ec2e1fa1152a">
<input type="text" name="title" id="edit-title" size="60">
<textarea cols="60" rows="20" name="body" id="edit-body" ></textarea>
<button type="submit" name="op" id="edit-submit" value="Сохранить">
</form>

В ответы выходит сообщение: Ошибка при проверке значения, пожалуйста повторите. Если ошибка повторится, сообщите администратору сайта.
Вопрос в поле

<input type="hidden" name="form_token" id="edit-page-node-form-form-token" value="61d21a587b96639c7750ec2e1fa1152a">

Если подставить значение с ноды сформированной на сайте, то запрос принимается. Потом опять нет.

Можно ли сгенерировать значения этого поля на стороне внешней формы или отключить проверку этого значения?

Комментарии

Аватар пользователя linex14 linex14 1 декабря 2010 в 12:23

Все оказалось просто
в includes\form.inc
экранируем проверку form_token

<?php
  
// If the session token was set by drupal_prepare_form(), ensure that it
  // matches the current user's session.
//  if (isset($form['#token'])) {
//    if (!drupal_valid_token($form_state['values']['form_token'], $form['#token'])) {
//      // Setting this error will cause the form to fail validation.
//      form_set_error('form_token', t('Validation error, please try again. If this error persists, please contact the site administrator.'));
//    }
//  }
?>
Аватар пользователя Crea Crea 1 декабря 2010 в 15:59

linex14 wrote:
Все оказалось просто
в includes\form.inc
экранируем проверку form_token

Ужоснах..
1) Хакнули ядро без причины
2) Создали уязвимость в движке

Аватар пользователя bsyomov bsyomov 1 декабря 2010 в 14:49

Просто - возможно, но неправильно - вы вмешались в код ядра друпал, и вам придётся как минимум при каждом обновлении это учитывать. Так что лучше выбрать более правильные средства решения задачи.