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

Hide inherited properties

PropertyTypeDescriptionDefined By
_aBehaviors Список поведений в виде готовых объектов, формируется автоматически LsObject
aBehaviors array Список поведений LsObject
bIsInit bool Указывает на то, была ли проведенна инициализация модуля Module

Public Methods

Hide inherited methods

MethodDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined 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