diff --git a/class2.php b/class2.php index 8ca5a9d32..6d632b7ab 100644 --- a/class2.php +++ b/class2.php @@ -1603,6 +1603,15 @@ function init_session() $user = e107::getUser(); define('USERIP', $e107->getip()); + define('POST_REFERER', md5($user->getToken())); + + // Check for intruders - outside the model for now + if((isset($_POST['__referer']) && !$user->checkToken($_POST['__referer'])) + || (isset($_GET['__referer']) && !$user->checkToken($_GET['__referer']))) + { + // Die, die, die! DIE!!! + die('Unauthorized access!'); + } if(e107::isCli()) { diff --git a/e107_handlers/form_handler.php b/e107_handlers/form_handler.php index 22831893f..3a5491aa9 100644 --- a/e107_handlers/form_handler.php +++ b/e107_handlers/form_handler.php @@ -608,6 +608,15 @@ class e_form return "get_attributes($options, $name, $value)." />"; } + /** + * Generate hidden security field + * @return string + */ + function referer() + { + return ""; + } + function submit($name, $value, $options = array()) { $options = $this->format_options('submit', $name, $options); @@ -1667,6 +1676,7 @@ class e_form $text = "
"; if(!$nocontainer) @@ -1785,6 +1796,8 @@ class e_form $text .= " "; e107::getJs()->footerInline("Form.focusFirstElement('{$form['id']}-form');"); @@ -2057,7 +2071,7 @@ class form { $method = ($form_method ? "method='".$form_method."'" : ""); $target = ($form_target ? " target='".$form_target."'" : ""); $name = ($form_name ? " id='".$form_name."' " : " id='myform'"); - return "\n