@@ -14,18 +14,17 @@ class CAuthorizer
14
14
// prevent an object from being constructed
15
15
private function __construct ()
16
16
{
17
- $ label = preg_replace ( ' /\W/ ' , ' _ ' , SERVER_ROOT );
18
- $ this ->_id_field = "{ $ label} _uid " ;
19
- $ this ->_pass_field = "{ $ label} _pass " ;
17
+ $ label = strtoupper ( substr ( md5 ( SERVER_ROOT ), 0 , 16 ) );
18
+ $ this ->_id_field = ' LSID ' . $ label ;
19
+ $ this ->_pass_field = ' LSPA ' . $ label ;
20
20
21
- session_name ("{ $ label} WEBUI " ); // to prevent conflicts with other app sessions
21
+ session_name (' LSUI ' . $ label ); // to prevent conflicts with other app sessions
22
22
session_start ();
23
23
24
24
if (!array_key_exists ('changed ' , $ _SESSION )) {
25
25
$ _SESSION ['changed ' ] = false ;
26
26
}
27
27
28
-
29
28
if (!array_key_exists ('valid ' , $ _SESSION )) {
30
29
$ _SESSION ['valid ' ] = false ;
31
30
}
@@ -168,16 +167,14 @@ public function ShowLogin($is_https, &$msg)
168
167
$ userid = $ result ['userid ' ];
169
168
$ pass = $ result ['pass ' ];
170
169
} else if ($ is_https && isset ($ _POST ['userid ' ])) {
171
- $ userid = UIBase::GrabGoodInput ('POST ' , 'userid ' );
170
+ $ userid = UIBase::GrabInput ('POST ' , 'userid ' );
172
171
$ pass = UIBase::GrabInput ('POST ' , 'pass ' );
173
172
}
174
173
175
- if ($ userid != null ) {
176
- if ($ this ->authenticate ($ userid , $ pass ) === true )
177
- return false ;
178
- else
179
- $ msg = DMsg::Err ('err_login ' );
174
+ if ($ userid != null && ($ this ->authenticate ($ userid , $ pass ) === true )) {
175
+ return false ;
180
176
}
177
+ $ msg = DMsg::Err ('err_login ' );
181
178
return true ;
182
179
}
183
180
@@ -203,7 +200,11 @@ private function clear()
203
200
private function authenticate ($ authUser , $ authPass )
204
201
{
205
202
$ auth = false ;
206
- if (strlen ($ authUser ) && strlen ($ authPass )) {
203
+ $ authUser1 = escapeshellcmd ($ authUser );
204
+
205
+ if (($ authUser === $ authUser1 )
206
+ && !preg_match ('/[:\/]/ ' , $ authUser )
207
+ && strlen ($ authUser ) && strlen ($ authPass )) {
207
208
$ filename = SERVER_ROOT . 'admin/conf/htpasswd ' ;
208
209
$ fd = fopen ($ filename , 'r ' );
209
210
if (!$ fd ) {
@@ -216,7 +217,7 @@ private function authenticate($authUser, $authPass)
216
217
$ lines = explode ("\n" , $ all );
217
218
foreach ($ lines as $ line ) {
218
219
list ($ user , $ pass ) = explode (': ' , $ line );
219
- if ($ user == $ authUser ) {
220
+ if ($ user === $ authUser ) {
220
221
if ($ pass [0 ] != '$ ' )
221
222
$ salt = substr ($ pass , 0 , 2 );
222
223
else
@@ -248,7 +249,7 @@ private function authenticate($authUser, $authPass)
248
249
249
250
$ this ->updateAccessTime (array ($ secretKey0 , $ secretKey1 ));
250
251
} else {
251
- $ this ->emailFailedLogin ($ authUser );
252
+ $ this ->emailFailedLogin ($ authUser1 );
252
253
}
253
254
254
255
return $ auth ;
@@ -263,11 +264,12 @@ private function emailFailedLogin($authUser)
263
264
264
265
$ emails = Service::ServiceData (SInfo::DATA_ADMIN_EMAIL );
265
266
if ($ emails != null ) {
266
- $ hostname = gethostbyaddr ($ ip );
267
267
$ date = date ("F j, Y, g:i a " );
268
268
269
- $ repl = array ('%%date%% ' => $ date , '%%authUser%% ' => $ authUser , '%%ip%% ' => $ ip ,
270
- '%%hostname%% ' => $ hostname , '%%url%% ' => $ url );
269
+ $ repl = array ('%%date%% ' => $ date ,
270
+ '%%authUser%% ' => $ authUser ,
271
+ '%%ip%% ' => $ ip ,
272
+ '%%url%% ' => $ url );
271
273
272
274
$ subject = DMsg::UIStr ('mail_failedlogin ' );
273
275
$ contents = DMsg::UIStr ('mail_failedlogin_c ' , $ repl );
0 commit comments