diff --git a/animation.php b/animation.php
index 51884fb..ba3c3aa 100644
--- a/animation.php
+++ b/animation.php
@@ -33,8 +33,14 @@ if (!isset($_GET['board']) || !isset($_GET['id'])) {
* Require the configuration file
*/
require 'config.php';
+$imagesize = $tc_db->GetAll("SELECT `image_w`, `image_h` FROM `" . KU_DBPREFIX . "posts` WHERE `file` = " . $tc_db->qstr($_GET['id']) . " LIMIT 1");
-$imagesize = $tc_db->GetAll("SELECT `image_w`, `image_h` FROM `posts` WHERE `file` = " . $tc_db->qstr($_GET['id']) . " LIMIT 1");
+
+// Checks to ensure valid $_GET input
+$board = $tc_db->GetAll("SELECT `desc` FROM `" . KU_DBPREFIX . "boards WHERE `desc` = " . $tc_db->qstr($_GET['board']) . " LIMIT 1");
+if (count($board) < 1 || !is_numeric($_GET['id'])) {
+ die();
+}
$width = $imagesize[0]['image_w'];
$height = $imagesize[0]['image_h'];
diff --git a/inc/classes/manage.class.php b/inc/classes/manage.class.php
index 6486d58..3b72a2c 100644
--- a/inc/classes/manage.class.php
+++ b/inc/classes/manage.class.php
@@ -109,6 +109,7 @@ class Manage {
$tc_db->Execute("UPDATE `" .KU_DBPREFIX. "staff` SET password = '" .$newpass. "' WHERE username = " .$tc_db->qstr($_POST['username']));
$_SESSION['manageusername'] = $_POST['username'];
$_SESSION['managepassword'] = $newpass;
+ $_SESSION['token'] = md5($_SESSION['manageusername'] . $_SESSION['managepassword'] . rand(0,100));
$this->SetModerationCookies();
$tc_db->Execute("DELETE FROM `" . KU_DBPREFIX . "loginattempts` WHERE `ip` < '" . $_SERVER['REMOTE_ADDR'] . "'");
$action = 'posting_rates';
@@ -122,6 +123,7 @@ class Manage {
if (md5($_POST['password'] . $results[0]['salt']) == $results[0]['password']) {
$_SESSION['manageusername'] = $_POST['username'];
$_SESSION['managepassword'] = md5($_POST['password'] . $results[0]['salt']);
+ $_SESSION['token'] = md5($_SESSION['manageusername'] . $_SESSION['managepassword'] . rand(0,100));
$this->SetModerationCookies();
$action = 'posting_rates';
management_addlogentry(_gettext('Logged in'), 1);
@@ -153,6 +155,14 @@ class Manage {
}
}
}
+
+ function CheckToken($posttoken) {
+ if ($posttoken != $_SESSION['token']) {
+ // Something is strange
+ session_destroy();
+ exitWithErrorPage(_gettext('Invalid Token'));
+ }
+ }
/* Log current user out */
function Logout() {
@@ -163,6 +173,7 @@ class Manage {
session_destroy();
unset($_SESSION['manageusername']);
unset($_SESSION['managepassword']);
+ unset($_SESSION['token']);
die('');
}
@@ -195,9 +206,10 @@ class Manage {
function CurrentUserIsAdministrator() {
global $tc_db, $tpl_page;
- if ($_SESSION['manageusername'] == '' || $_SESSION['managepassword'] == '') {
+ if ($_SESSION['manageusername'] == '' || $_SESSION['managepassword'] == '' || $_SESSION['token'] == '') {
$_SESSION['manageusername'] = '';
$_SESSION['managepassword'] = '';
+ $_SESSION['token'] = '';
return false;
}
@@ -219,9 +231,10 @@ class Manage {
function CurrentUserIsModerator() {
global $tc_db, $tpl_page;
- if ($_SESSION['manageusername'] == '' || $_SESSION['managepassword'] == '') {
+ if ($_SESSION['manageusername'] == '' || $_SESSION['managepassword'] == '' || $_SESSION['token'] == '') {
$_SESSION['manageusername'] = '';
$_SESSION['managepassword'] = '';
+ $_SESSION['token'] = '';
return false;
}
@@ -337,6 +350,7 @@ class Manage {
$tpl_page .= '
'. _gettext('Change account password') . '
';
if (isset($_POST['oldpwd']) && isset($_POST['newpwd']) && isset($_POST['newpwd2'])) {
+ $this->CheckToken($_POST['token']);
if ($_POST['oldpwd'] != '' && $_POST['newpwd'] != '' && $_POST['newpwd2'] != '') {
if ($_POST['newpwd'] == $_POST['newpwd2']) {
$results = $tc_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "staff` WHERE `username` = " . $tc_db->qstr($_SESSION['manageusername']) . "");
@@ -360,7 +374,7 @@ class Manage {
$tpl_page .= '
';
}
$tpl_page .= '';
}
} else {
+ $this->CheckToken($_POST['token']);
$results = $tc_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "wordfilter` WHERE `id` = " . $tc_db->qstr($_GET['editword']) . "");
if (count($results) > 0) {
foreach ($results as $line) {
@@ -1367,7 +1405,7 @@ class Manage {
}
} else {
$tpl_page .= '