Aleksander Machniak
2012-08-08 5def04bce0104062640f87f4b9d47f500d24e5be
- Fix (disable) request validation for spell and spell_html actions
Consider action whitelist also for ajax requests

Conflicts:

CHANGELOG
index.php
2 files modified
16 ■■■■■ changed files
CHANGELOG 4 ●●●● patch | view | raw | blame | history
index.php 12 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,10 @@
CHANGELOG Roundcube Webmail
===========================
- Fix (disable) request validation for spell and spell_html actions
RELEASE 0.8.0
-------------
- Don't show product version on login screen (can be enabled by config)
- Renamed old default skin to 'classic'. Larry is the new default skin.
- Support connections to memcached socket file (#1488577)
index.php
@@ -220,9 +220,9 @@
}
// CSRF prevention
else {
  // don't check for valid request tokens in these actions
  $request_check_whitelist = array('login'=>1, 'spell'=>1);
  $request_check_whitelist = array('login'=>1, 'spell'=>1, 'spell_html'=>1);
  if (!$request_check_whitelist[$RCMAIL->action]) {
  // check client X-header to verify request origin
  if ($OUTPUT->ajax_call) {
    if (rc_request_header('X-Roundcube-Request') != $RCMAIL->get_request_token()) {
@@ -231,19 +231,19 @@
    }
  }
  // check request token in POST form submissions
  else if (!empty($_POST) && !$request_check_whitelist[$RCMAIL->action] && !$RCMAIL->check_request()) {
    else if (!empty($_POST) && !$RCMAIL->check_request()) {
    $OUTPUT->show_message('invalidrequest', 'error');
    $OUTPUT->send($RCMAIL->task);
  }
  // check referer if configured
  if (!$request_check_whitelist[$RCMAIL->action] && $RCMAIL->config->get('referer_check') && !rcube_check_referer()) {
    if ($RCMAIL->config->get('referer_check') && !rcube_check_referer()) {
    raise_error(array(
      'code' => 403,
      'type' => 'php',
        'code' => 403, 'type' => 'php',
      'message' => "Referer check failed"), true, true);
  }
}
}
// we're ready, user is authenticated and the request is safe
$plugin = $RCMAIL->plugins->exec_hook('ready', array('task' => $RCMAIL->task, 'action' => $RCMAIL->action));