csrf_set_cookie(); } // Check if URI has been whitelisted from CSRF checks if ($exclude_uris = config_item('csrf_exclude_uris')) { $uri = load_class('URI', 'core'); // assumes /controller/method in your url. adjust as needed. $parts = explode("/",$uri->uri_string()); if (count($parts) >= 2) { $class=$parts[0]; $method=$parts[1]; foreach ($exclude_uris as $exclude_url_data) { if (@$exclude_url_data['controller'] == $class && @$exclude_url_data['method'] == $method) { return $this; } } } } // Do the tokens exist in both the _POST and _COOKIE arrays? if ( ! isset($_POST[$this->_csrf_token_name], $_COOKIE[$this->_csrf_cookie_name]) OR $_POST[$this->_csrf_token_name] !== $_COOKIE[$this->_csrf_cookie_name]) // Do the tokens match? { $this->csrf_show_error(); } // We kill this since we're done and we don't want to polute the _POST array unset($_POST[$this->_csrf_token_name]); // Regenerate on every submission? if (config_item('csrf_regenerate')) { // Nothing should last forever unset($_COOKIE[$this->_csrf_cookie_name]); $this->_csrf_hash = NULL; } $this->_csrf_set_hash(); $this->csrf_set_cookie(); log_message('info', 'CSRF token verified'); return $this; } }