From a4957c186c6f32acbeb32e0bf6e1ac052cf22044 Mon Sep 17 00:00:00 2001 From: xamgore <xamgore@ya.ru> Date: Tue, 9 Jun 2015 21:54:47 +0300 Subject: [PATCH] All variables at model Account are escaped --- .../application/classes/Model/Account.php | 347 ++++++++---------- ~dev_rating/application/classes/User.php | 2 +- 2 files changed, 147 insertions(+), 202 deletions(-) diff --git a/~dev_rating/application/classes/Model/Account.php b/~dev_rating/application/classes/Model/Account.php index 3170d4eb8..088d40b25 100644 --- a/~dev_rating/application/classes/Model/Account.php +++ b/~dev_rating/application/classes/Model/Account.php @@ -2,23 +2,20 @@ class Model_Account extends Model { - public static function setHashKey($key) - { - $key = Database::instance()->escape($key); - $sql = "SELECT `SetSettings`('HashKey', '', $key) AS `Key`;"; - $res = DB::query(Database::SELECT, $sql)->execute(); - return $res->get('Key'); + public static function setHashKey($key) { + $sql = "SELECT `SetSettings`('HashKey', '', :key) AS `key`;"; + DB::query(Database::SELECT, $sql) + ->param(':key', $key) + ->execute()->get('key'); } - public static function getHashKey() - { + public static function getHashKey() { $sql = "CALL `GetSettings`('HashKey');"; - $key = DB::query(Database::SELECT, $sql)->execute(); - return $key->get('ValS'); + return DB::query(Database::SELECT, $sql) + ->execute()->get('ValS'); } - public static function getMaintenanceInfo() - { + public static function getMaintenanceInfo() { $sql = "CALL `GetSettings`('maintenance_active');"; $key = DB::query(Database::SELECT, $sql)->execute(); $result['active'] = ($key->get('Val') == 1); @@ -29,231 +26,179 @@ class Model_Account extends Model } public static function checkAuth($login, $password) { - $db = Database::instance(); - $login = $db->escape($login); - $password = $db->escape($password); - $sql = "SELECT `SignIn`($login, $password) AS `ID`;"; - $res = DB::query(Database::SELECT, $sql)->execute(); - return $res->get('ID'); - } - - - public static function ChangeTeacherInfo($id, $lastName, $firstName, $secondName, $degreeID, $departmentID) - { - $db = Database::instance(); - $lastName = $db->escape($lastName); - $secondName = $db->escape($secondName); - $firstName = $db->escape($firstName); - $sql = "SELECT `ChangeTeacherInfo`('$id', $lastName, $firstName, $secondName, '$degreeID', '$departmentID') AS `UserID`;"; - $key = DB::query(Database::SELECT, $sql)->execute(); - return $key->get('UserID'); - } - - - public static function createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID, $activationCode) - { - $db = Database::instance(); - $lastName = $db->escape($lastName); - $secondName = $db->escape($secondName); - $firstName = $db->escape($firstName); - $activationCode = $db->escape($activationCode); - $sql = "SELECT `CreateTeacher`($lastName, $firstName, $secondName, '$degreeID', '$departmentID', $activationCode) AS `UserID`;"; - $key = DB::query(Database::SELECT, $sql)->execute(); - return $key->get('UserID'); - } - - - public static function createTeacherByDepName($lastName, $firstName, $secondName, $departmentID, $facultyID, $activationCode) - { + $sql = "SELECT `SignIn`(:login, :pass) AS `ID`;"; + return DB::query(Database::SELECT, $sql) + ->param(':login', $login) + ->param(':pass', $password) + ->execute()->get('ID'); + } + + public static function changeTeacherInfo($id, $lastName, $firstName, $secondName, $degreeID, $departmentID) { + $sql = "SELECT `ChangeTeacherInfo`(:id, :last, :first, :second, :degree, :department) AS `UserID`;"; + return DB::query(Database::SELECT, $sql) + ->parameters([ + ':id' => $id, + ':last' => $lastName, + ':first' => $firstName, + ':second' => $secondName, + ':degree' => $degreeID, + 'department' => $departmentID, + ])->execute()->get('UserID'); + } + + public static function createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID, $activationCode) { + $sql = "SELECT `CreateTeacher`() AS `UserID`;"; + return DB::query(Database::SELECT, $sql) + ->parameters([ + ':last' => $lastName, + ':first' => $firstName, + ':second' => $secondName, + ':degree' => $degreeID, + ':department' => $departmentID, + ':code' => $activationCode, + ])->execute()->get('UserID'); + } + + public static function createTeacherByDepName($lastName, $firstName, $secondName, $departmentID, $facultyID, $activationCode) { if ($departmentID == '') { return -1; } - $db = Database::instance(); - $lastName = $db->escape($lastName); - $secondName = $db->escape($secondName); - $firstName = $db->escape($firstName); - $activationCode = $db->escape($activationCode); - $departmentID = $db->escape($departmentID); - $sql = "SELECT `CreateTeacherByDepName`($lastName, $firstName, $secondName, $departmentID, '$facultyID', $activationCode) AS `UserID`;"; - $key = DB::query(Database::SELECT, $sql)->execute(); - return $key->get('UserID'); - } - - public static function createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $activationCode) - { - $db = Database::instance(); - $lastName = $db->escape($lastName); - $secondName = $db->escape($secondName); - $firstName = $db->escape($firstName); - $activationCode = $db->escape($activationCode); - $sql = "SELECT `CreateStudent`($lastName, $firstName, $secondName, '$grade', '$groupNum', '$facultyID', $activationCode) AS `UserID`;"; - $key = DB::query(Database::SELECT, $sql)->execute(); - return $key->get('UserID'); - } - - public static function createStudentEx($lastName, $firstName, $secondName, $gradeNum, $groupNum, $degree, $specialization, $facultyID, $activationCode) - { - $db = Database::instance(); - $lastName = $db->escape($lastName); - $secondName = $db->escape($secondName); - $firstName = $db->escape($firstName); - $activationCode = $db->escape($activationCode); - $degree = $db->escape($degree); - $specialization = $db->escape($specialization); - $sql = "SELECT `CreateStudentEx`($lastName, $firstName, $secondName, '$gradeNum', '$groupNum', $degree, $specialization, '$facultyID', $activationCode) AS `UserID`;"; - $key = DB::query(Database::SELECT, $sql)->execute(); - return $key->get('UserID'); + $sql = "SELECT `CreateTeacherByDepName`(:last, :first, :second, :department, :faculty, :code) AS `UserID`;"; + return DB::query(Database::SELECT, $sql) + ->parameters([ + ':last' => $lastName, + ':first' => $firstName, + ':second' => $secondName, + ':department' => $departmentID, + ':faculty' => $facultyID, + ':code' => $activationCode, + ])->execute()->get('UserID'); + } + + public static function createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $activationCode) { + $sql = "SELECT `CreateStudent`(:last, :first, :second, :grade, :group, :faculty, :code) AS `UserID`;"; + return DB::query(Database::SELECT, $sql) + ->parameters([ + ':last' => $lastName, + ':first' => $firstName, + ':second' => $secondName, + ':grade' => $grade, + ':group' => $groupNum, + ':faculty' => $facultyID, + ':code' => $activationCode, + ])->execute()->get('UserID'); + } + + public static function createStudentEx($lastName, $firstName, $secondName, $gradeNum, $groupNum, $degree, $specialization, $facultyID, $activationCode) { + $sql = "SELECT `CreateStudentEx`(:last, :first, :second, :grade, :group, :degree, :spec, :faculty, :code) AS `UserID`;"; + return DB::query(Database::SELECT, $sql) + ->parameters([ + ':last' => $lastName, + ':first' => $firstName, + ':second' => $secondName, + ':grade' => $gradeNum, + ':group' => $groupNum, + ':degree' => $degree, + ':spec' => $specialization, + ':faculty' => $facultyID, + ':code' => $activationCode, + ])->execute()->get('UserID'); } public static function getPersonalInfo($id, $semesterID = null) { $semesterID = $semesterID ? $semesterID : User::instance()->SemesterID; - $sql = "CALL `GetPersonalInfo`('$id', $semesterID);"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query[0]; + $sql = "CALL `GetPersonalInfo`(:id, :semester);"; + return DB::query(Database::SELECT, $sql) + ->param(':semester', (int) $semesterID) + ->param(':id', (int) $id) + ->execute()[0]; } - public static function GetAccountInfo($id) - { - $sql = "CALL GetAccountInfo('$id');"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query[0]; + public static function getAccountInfo($id) { + return DB::query(Database::SELECT, "CALL GetAccountInfo(:id);") + ->param(':id', (int) $id)->execute()[0]; } /** * @param int $id - * @param string $data - * @param string $type 'email', 'login' or 'password' + * @param string $value + * @param string $type 'email', 'login' or 'password' + * @return int */ - public static function changeAccountData($accountID, $data, $type) - { - $data = Database::instance()->escape($data); - $type = Database::instance()->escape($type); - $sql = "SELECT `ChangeAccountData`('$accountID', $data, $type) AS Num;"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query->get('Num'); - } - - # TODO: deprecated (use changeAccountData instead) - public static function changeMail($id, $mail) - { - $mail = Database::instance()->escape($mail); - $sql = "SELECT `ChangeAccountData`('$id', $mail, 'email') AS Num;"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query->get('Num'); - } - - # TODO: deprecated (use changeAccountData instead) - public static function changeLogin($id, $login) - { - $login = Database::instance()->escape($login); - $sql = "SELECT `ChangeAccountData`('$id', $login, 'login') AS Num;"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query->get('Num'); - } - - # TODO: deprecated (use changeAccountData instead) - public static function changePassword($id, $password) - { - $password = Database::instance()->escape($password); - $sql = "SELECT `ChangeAccountData`('$id', $password, 'password') AS Num;"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query->get('Num'); + public static function changeAccountData($id, $value, $type) { + $sql = "SELECT `ChangeAccountData`(:account, :value, :type) AS Num;"; + return DB::query(Database::SELECT, $sql) + ->parameters([ + ':account' => $id, + ':value' => $value, + ':type' => $type, + ])->execute()->get('Num'); } - /** * @param string $data - * @param string $type 'login','email' or 'code' + * @param string $type 'login','email' or 'code' + * @return int */ public static function checkAccountExistence($data, $type) { - $data = Database::instance()->escape($data); - $type = Database::instance()->escape($type); - $sql = "SELECT `CheckAccountExistence`($data, $type) AS Num;"; - $res = DB::query(Database::SELECT, $sql)->execute(); - return $res->get('Num'); - } - - - # TODO: deprecated (use checkAccountExistence instead) - public static function getAccNumByLogin($login) - { - $login = Database::instance()->escape($login); - $sql = "SELECT `CheckAccountExistence`($login, 'login') AS Num;"; - $res = DB::query(Database::SELECT, $sql)->execute(); - return $res->get('Num'); + $sql = "SELECT `CheckAccountExistence`(:data, :type) AS Num;"; + return DB::query(Database::SELECT, $sql) + ->param(':data', $data) + ->param(':type', $type) + ->execute()->get('Num'); } - # TODO: deprecated (use checkAccountExistence instead) - public static function getAccNumByMail($email) - { - $email = Database::instance()->escape($email); - $sql = "SELECT `CheckAccountExistence`($email, 'email') AS Num;"; - $res = DB::query(Database::SELECT, $sql)->execute(); - return $res->get('Num'); + public static function isActivationCodeValid($code) { + $sql = "SELECT `CheckAccountExistence`(:acode, 'code') AS Num;"; + $res = DB::query(Database::SELECT, $sql) + ->param(':acode', $code) + ->execute()->get('Num'); + return $res == 1; } - public static function isActivationCodeValid($code) - { - $code = Database::instance()->escape($code); - $sql = "SELECT `CheckAccountExistence`($code, 'code') AS Num;"; - $res = DB::query(Database::SELECT, $sql)->execute(); - - $count = $res->get('Num'); - return $count == 1; - } - - public static function createRecoveryToken($email, $token) - { - $db = Database::instance(); - $email = $db->escape($email); - $token = $db->escape($token); - $sql = "SELECT `CreateRecoveryToken`($email, $token) AS UserName;"; - $res = DB::query(Database::SELECT, $sql)->execute(); - return $res->get('UserName'); + public static function createRecoveryToken($email, $token) { + $sql = "SELECT `CreateRecoveryToken`(:email, :token) AS UserName;"; + return DB::query(Database::SELECT, $sql) + ->param(':email', $email) + ->param(':token', $token) + ->execute()->get('UserName'); } - public static function getRecoveryInfoByEMail($email) - { - $email = Database::instance()->escape($email); - $sql = "CALL GetRecoveryInfoByEMail($email);"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query; + public static function getRecoveryInfoByEMail($email) { + $sql = "CALL GetRecoveryInfoByEMail(:email);"; + return DB::query(Database::SELECT, $sql) + ->param(':email', $email) + ->execute(); } - public static function getRecoveryInfoByToken($token) - { - $token = Database::instance()->escape($token); - $sql = "CALL GetRecoveryInfoByToken($token);"; - $query = DB::query(Database::SELECT, $sql)->execute(); - return $query; + public static function getRecoveryInfoByToken($token) { + $sql = "CALL GetRecoveryInfoByToken(:token);"; + return DB::query(Database::SELECT, $sql) + ->param(':token', $token)->execute(); } - public static function useRecoveryToken($token) - { - $token = Database::instance()->escape($token); - $sql = "SELECT `UseRecoveryToken`($token) AS Num;"; - $email = DB::query(Database::SELECT, $sql)->execute(); - return $email->get('Num'); + public static function useRecoveryToken($token) { + $sql = "SELECT `UseRecoveryToken`(:token) AS Num;"; + return DB::query(Database::SELECT, $sql) + ->param(':token', $token) + ->execute()->get('Num'); } - public static function activateAccount($login, $password, $email, $code) - { - $db = Database::instance(); - $login = $db->escape($login); - $password = $db->escape($password); - $email = $db->escape($email); - $code = $db->escape($code); - $sql = "SELECT `ActivateAccount` ($code, $login, $email, $password) AS `Num`; "; - $res = DB::query(Database::SELECT, $sql)->execute(); - return $res->get('Num'); + public static function activateAccount($login, $password, $email, $code) { + $sql = "SELECT `ActivateAccount`(:code, :login, :email, :pass) AS `Num`;"; + return DB::query(Database::SELECT, $sql) + ->parameters([ + ':code' => $code, + ':login' => $login, + ':email' => $email, + ':pass' => $password, + ])->execute()->get('Num'); } public static function getCurSemesterID() { $sql = "CALL `GetSettings`('SemesterID');"; - $res = DB::query(Database::SELECT, $sql)->execute(); - $id = null; - return $res->get('Val'); + return DB::query(Database::SELECT, $sql) + ->execute()->get('Val'); } - } \ No newline at end of file diff --git a/~dev_rating/application/classes/User.php b/~dev_rating/application/classes/User.php index c28b613fa..dc87bac8f 100644 --- a/~dev_rating/application/classes/User.php +++ b/~dev_rating/application/classes/User.php @@ -244,7 +244,7 @@ class User implements ArrayAccess public function changeProfile($data) { if ($this->Type == 'teacher') { - Model_Account::ChangeTeacherInfo($this['TeacherID'], $data['lastName'], $data['firstName'], $data['secondName'], $data['jobPositionID'], $data['departmentID']); + Model_Account::changeTeacherInfo($this['TeacherID'], $data['lastName'], $data['firstName'], $data['secondName'], $data['jobPositionID'], $data['departmentID']); } } -- GitLab