1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
session.php
См. документацию.
1
<?
2
8
class
CSecuritySession
9
{
10
const
GC_AGENT_NAME
=
"CSecuritySession::CleanUpAgent();"
;
11
protected
static
$oldSessionId
=
null
;
12
13
public
static
function
Init
()
14
{
15
if
(
CSecuritySessionVirtual::isStorageEnabled
())
16
{
17
static::registerHandler(
'CSecuritySessionVirtual'
);
18
}
19
elseif
(
CSecuritySessionMC::isStorageEnabled
())
20
{
21
static::registerHandler(
'CSecuritySessionMC'
);
22
}
23
elseif
(
CSecuritySessionRedis::isStorageEnabled
())
24
{
25
static::registerHandler(
'CSecuritySessionRedis'
);
26
}
27
else
28
{
29
static::registerHandler(
'CSecuritySessionDB'
);
30
}
31
}
32
36
public
static
function
triggerFatalError
($pMessage =
""
)
37
{
38
CHTTP::SetStatus
(
"500 Internal Server Error"
);
39
trigger_error($pMessage, E_USER_ERROR);
40
die
();
41
}
42
46
public
static
function
CleanUpAgent
()
47
{
48
$maxlifetime = intval(ini_get(
"session.gc_maxlifetime"
));
49
50
if
($maxlifetime && !
CSecuritySessionMC::isStorageEnabled
())
51
{
52
CSecuritySessionDB::gc
($maxlifetime);
53
}
54
55
return
self::GC_AGENT_NAME;
56
}
57
58
public
static
function
UpdateSessID
()
59
{
60
$oldSessionId
= session_id();
61
session_regenerate_id();
62
$newSessionId = session_id();
63
64
//Delay database update to session write moment
65
if
(!self::$oldSessionId)
66
self::$oldSessionId =
$oldSessionId
;
67
}
68
72
public
static
function
isOldSessionIdExist
()
73
{
74
return
self::$oldSessionId &&
self::checkSessionId
(self::$oldSessionId);
75
}
76
81
public
static
function
getOldSessionId
($cleanUp =
false
)
82
{
83
$result
= self::$oldSessionId;
84
if
($cleanUp)
85
self::$oldSessionId =
null
;
86
87
return
$result
;
88
}
89
94
public
static
function
checkSessionId
($id)
95
{
96
return
(
97
$id
98
&& is_string($id)
99
&& preg_match(
'/^[\da-z\-,]{6,}$/iD'
, $id)
100
);
101
}
102
103
public
static
function
activate
()
104
{
105
COption::SetOptionString(
"security"
,
"session"
,
"Y"
);
106
session_write_close();
107
CSecuritySession::Init
();
108
session_start();
109
CAgent::RemoveAgent(self::GC_AGENT_NAME,
"security"
);
110
CAgent::Add(
array
(
111
"NAME"
=> self::GC_AGENT_NAME,
112
"MODULE_ID"
=>
"security"
,
113
"ACTIVE"
=>
"Y"
,
114
"AGENT_INTERVAL"
=> 1800,
115
"IS_PERIOD"
=>
"N"
,
116
));
117
}
118
119
public
static
function
deactivate
()
120
{
121
COption::SetOptionString(
"security"
,
"session"
,
"N"
);
122
CAgent::RemoveAgent(self::GC_AGENT_NAME,
"security"
);
123
}
124
125
protected
static
function
registerHandler
($class)
126
{
127
if
(!class_exists($class))
128
{
129
self::triggerFatalError
(
130
sprintf(
'Session handler "%s" was not found.'
, $class)
131
);
132
}
133
134
if
(!$class::Init())
135
{
136
self::triggerFatalError
(
137
sprintf(
'Failed to initialize "%s" session handler.'
, $class)
138
);
139
}
140
141
$handler =
new
CSecuritySessionHandler
($class);
142
session_set_save_handler($handler,
true
);
143
}
144
145
public
static
function
createSid
()
146
{
147
return \Bitrix\Main\Security\Random::getString(32,
true
);
148
}
149
}
CHTTP\SetStatus
static SetStatus($status)
Определения
http.php:476
CSecuritySessionDB\gc
static gc($maxLifeTime)
Определения
session_db.php:139
CSecuritySessionHandler
Определения
session_handler.php:9
CSecuritySession
Определения
session.php:9
CSecuritySession\GC_AGENT_NAME
const GC_AGENT_NAME
Определения
session.php:10
CSecuritySession\registerHandler
static registerHandler($class)
Определения
session.php:125
CSecuritySession\isOldSessionIdExist
static isOldSessionIdExist()
Определения
session.php:72
CSecuritySession\getOldSessionId
static getOldSessionId($cleanUp=false)
Определения
session.php:81
CSecuritySession\deactivate
static deactivate()
Определения
session.php:119
CSecuritySession\activate
static activate()
Определения
session.php:103
CSecuritySession\checkSessionId
static checkSessionId($id)
Определения
session.php:94
CSecuritySession\createSid
static createSid()
Определения
session.php:145
CSecuritySession\CleanUpAgent
static CleanUpAgent()
Определения
session.php:46
CSecuritySession\UpdateSessID
static UpdateSessID()
Определения
session.php:58
CSecuritySession\Init
static Init()
Определения
session.php:13
CSecuritySession\$oldSessionId
static $oldSessionId
Определения
session.php:11
CSecuritySession\triggerFatalError
static triggerFatalError($pMessage="")
Определения
session.php:36
CSecuritySessionMC\isStorageEnabled
static isStorageEnabled()
Определения
session_mc.php:206
CSecuritySessionRedis\isStorageEnabled
static isStorageEnabled()
Определения
session_redis.php:213
CSecuritySessionVirtual\isStorageEnabled
static isStorageEnabled()
Определения
session_virtual.php:19
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$result
$result
Определения
get_property_values.php:14
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
die
die
Определения
quickway.php:367
bitrix
modules
security
classes
general
session.php
Создано системой
1.14.0