ModuleSecurity
Package | framework.modules |
---|---|
Inheritance | class ModuleSecurity » Module » LsObject |
Since | 1.0 |
Source Code | /framework/classes/modules/security/Security.class.php |
Модуль безопасности
Необходимо использовать перед обработкой отправленной формы:
if (getRequest('submit_add')) { $this->Security_ValidateSendForm(); // далее код обработки формы ...... }
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
GetSecurityKey() | Возвращает текущий security-ключ | ModuleSecurity |
Init() | Инициализируем модуль | ModuleSecurity |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
SetInit() | Помечает модуль как инициализированный | Module |
Shutdown() | Метод срабатывает при завершении работы ядра | Module |
ValidateReferal() | Проверка на соотвествие реферала | ModuleSecurity |
ValidateSecurityKey() | Проверяет наличие security-ключа в сессии | ModuleSecurity |
ValidateSendForm() | Производит валидацию отправки формы/запроса от пользователя, позволяет избежать атаки CSRF | ModuleSecurity |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | Блокируем копирование/клонирование объекта | Module |
__construct() | Конструктор, запускается автоматически при создании объекта | LsObject |
__get() | Обработка доступа к объекты поведения | LsObject |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
GenerateSecurityKey() | Генерирует и возвращает security-ключ | ModuleSecurity |
PrepareBehaviors() | Инициализация поведений | LsObject |
Method Details
GenerateSecurityKey()
method
protected string GenerateSecurityKey()
| ||
{return} | string |
Source Code: /framework/classes/modules/security/Security.class.php#116 (show)
protected function GenerateSecurityKey()
{
/**
* Сначала получаем уникальные данные пользователя по его браузеру и IP
*/
$sDataForHash = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
$sDataForHash .= isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
/**
* Далее добавляем ID сессии и уникальный ключ из конфига
*/
$sDataForHash .= $this->Session_GetId() . Config::Get('module.security.hash');
return md5($sDataForHash);
}
Генерирует и возвращает security-ключ
GetSecurityKey()
method
public void GetSecurityKey()
|
Source Code: /framework/classes/modules/security/Security.class.php#106 (show)
public function GetSecurityKey()
{
return $this->GenerateSecurityKey();
}
Возвращает текущий security-ключ
Init()
method
public void Init()
|
Source Code: /framework/classes/modules/security/Security.class.php#42 (show)
public function Init()
{
}
Инициализируем модуль
ValidateReferal()
method
public bool ValidateReferal()
| ||
{return} | bool |
Source Code: /framework/classes/modules/security/Security.class.php#71 (show)
public function ValidateReferal()
{
if (isset($_SERVER['HTTP_REFERER'])) {
$aUrl = parse_url($_SERVER['HTTP_REFERER']);
if (isset($aUrl['host'])) {
$aRoot = parse_url(Config::Get('path.root.web'));
if (isset($aRoot['host'])) {
if (strcasecmp($aUrl['host'], $aRoot['host']) == 0) {
return true;
} elseif (preg_match("/\." . quotemeta($aRoot['host']) . "$/i", $aUrl['host'])) {
return true;
}
}
}
}
return false;
}
Проверка на соотвествие реферала
ValidateSecurityKey()
method
public bool ValidateSecurityKey(null|string $sCode=NULL)
| ||
$sCode | null|string | Код для проверки, если нет то берется из реквеста |
{return} | bool |
Source Code: /framework/classes/modules/security/Security.class.php#95 (show)
public function ValidateSecurityKey($sCode = null)
{
if (!$sCode) {
$sCode = getRequestStr('security_ls_key');
}
return ($sCode == $this->GetSecurityKey());
}
Проверяет наличие security-ключа в сессии
ValidateSendForm()
method
public bool ValidateSendForm(bool $bDie=true)
| ||
$bDie | bool | Определяет завершать работу скрипта или нет |
{return} | bool |
Source Code: /framework/classes/modules/security/Security.class.php#54 (show)
public function ValidateSendForm($bDie = true)
{
if (!$this->ValidateSecurityKey()) {
if ($bDie) {
die("Hacking attemp!");
} else {
return false;
}
}
return true;
}
Производит валидацию отправки формы/запроса от пользователя, позволяет избежать атаки CSRF