mirror of
https://github.com/rejetto/hfs2.git
synced 2025-12-19 10:03:56 +01:00
limit session to original IP
This commit is contained in:
parent
8a622be58d
commit
ef4340fc59
24
main.pas
24
main.pas
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
Copyright (C) 2002-2014 Massimo Melina (www.rejetto.com)
|
Copyright (C) 2002-2014 Massimo Melina (www.rejetto.com)
|
||||||
|
|
||||||
This file is part of HFS ~ HTTP File Server.
|
This file is part of HFS ~ HTTP File Server.
|
||||||
@ -295,7 +295,7 @@ type
|
|||||||
vars: THashedStringList;
|
vars: THashedStringList;
|
||||||
created, ttl, expires: Tdatetime;
|
created, ttl, expires: Tdatetime;
|
||||||
public
|
public
|
||||||
id, user: string;
|
id, user, ip: string;
|
||||||
constructor create(const sid:string='');
|
constructor create(const sid:string='');
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure setVar(const k,v:string);
|
procedure setVar(const k,v:string);
|
||||||
@ -4881,10 +4881,11 @@ var
|
|||||||
+'filename*=UTF-8'''''+s+'; filename='+s));
|
+'filename*=UTF-8'''''+s+'; filename='+s));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure sessionSetup();
|
function sessionSetup():boolean;
|
||||||
var
|
var
|
||||||
sid: string;
|
sid: string;
|
||||||
begin
|
begin
|
||||||
|
result:=TRUE;
|
||||||
if data = NIL then
|
if data = NIL then
|
||||||
exit;
|
exit;
|
||||||
data.user:='';
|
data.user:='';
|
||||||
@ -4897,11 +4898,21 @@ var
|
|||||||
if sid = '' then
|
if sid = '' then
|
||||||
begin
|
begin
|
||||||
data.session:=Tsession.create();
|
data.session:=Tsession.create();
|
||||||
|
data.session.ip:=conn.address;
|
||||||
conn.setCookie(SESSION_COOKIE, data.session.id, ['path','/'], 'HttpOnly'); // the session is site-wide, even if this request was related to a folder
|
conn.setCookie(SESSION_COOKIE, data.session.id, ['path','/'], 'HttpOnly'); // the session is site-wide, even if this request was related to a folder
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
try data.session:=sessions[sid]
|
try
|
||||||
except data.session:=Tsession.create(sid) // probably expired
|
data.session:=sessions[sid];
|
||||||
|
if data.session.ip <> conn.address then
|
||||||
|
begin
|
||||||
|
conn.reply.mode:=HRM_DENY;
|
||||||
|
result:=FALSE;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
data.session:=Tsession.create(sid); // probably expired
|
||||||
|
data.session.ip:=conn.address;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
data.session.keepAlive();
|
data.session.keepAlive();
|
||||||
@ -5286,7 +5297,8 @@ var
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
sessionSetup();
|
if not sessionSetup() then
|
||||||
|
exit;
|
||||||
if mode = 'logout' then
|
if mode = 'logout' then
|
||||||
begin
|
begin
|
||||||
data.logout();
|
data.logout();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user