Author:
Per Stenebo
Created:
2011-10-07 11:25:47
Modified:
2017-04-16 12:59:03
sv

Säkerhet

Systemets konfigurationsfil

Efter installationen bör systemets konfigurationsfil ~/bendcms/sysconfig/BendCMS_config.php flyttas till en plats som inte är åtkomlig från internet, men ändå tillgänglig för inkludering för webbservern.

Om konfigurationsfilen flyttats eller ändrat namn behöver man öppna systements huvudfil ~/bendcms/sysInc/controller.php och ändra sökvägen till konfigurationsfilen.

På många webbhotell kan man lägga filen exakt en nivå över webbroten.

Exempel på justering sökväg på rad 28 i ~/bendcms.php:

require($sConf['sysConfigDir'].'/BendCMS_config.php');

ändras till

require('../BendCMS_config.php');

Krypterade lösenord

För att försvåra obehörig inloggning lagras inte medlemmarnas lösenord i klartext.
Lösenorden krypteras med PHP-funktionen crypt() innan lagring.

Salt i lösenord

För att ytterligare förstärka säkerheten tillsätts salt före och efter det verkliga lösenordet innan det krypteras.
Saltet består av två strängar, den första definieras globalt i systemets konfigurationsfil och bör vara unikt för varje installation:

$sConf['pwdSalt'] = 'somestring';

Den andra saltsträngen består av tidstämpel i formatet "unix timestamp" för när det aktuella användarkontot skapades.
Denna variabel lagras i användarens konfigurationsfil i mappen ~/bendcms/memberConfig

$uConf[0]['created'] = 1387302229;

Fördröjd inloggning

För att försvåra obehörig inloggning genom Brute-Force attack fördröjs varje inloggning vare sig den är framgångsrik eller inte.

Sessionsdata

Data relaterad till användaren bevaras mellan sidladdningar i den globala variablen $_SESSION.
Datan innehåller användarens behörighet, namn, tidstämpel för inloggning mm.

Användarens session försvinner alltid när användaren stänger webbläsaren eller om servern startas om.
Sessionen kan även försvinna av andra orsaker.

Kakor

Sessionskaka

Varje gång någon besöker systemet startas serverns sessionshantering.
Då lagras en kaka med namnet PHPSESSID på klienten.
BendCMS använder inte aktivt denna kaka och den förfaller normalt vid sessionens slut.

Användarkaka

Om man vill säkra sin session (inloggningsstatus) även om sessionen id ändras kan användaren ange önskat antal timmar i en ruta vid inloggningen. Då sparas en kaka som identifierar användaren och användarens sessionsdata kan återställas.

Kakan har en begränsad livslängd som kontrolleras både av klienten och servern.
Livslängden kan användaren själv ange vid inloggning. Max livslängd är hårdkodad till 999 timmar.
Om användaren lämnar rutan för livslängd tom eller skriver in 0 (noll) som värde skapas inte användarkakan och användarsessionen förfaller när kakan PHPSESSID förfaller.

Kakan innehåller följande information:

  1. Kakans namn
  2. Kakans förfallotid.
  3. Användarens id-nummer.
  4. Krypterad sträng som servern använder för att kontrollera att kakan är autentisk.
  5. Tidstämpel för inloggning.

Kakans namn är som standard "bcmsCoo" men det kan och bör ändras i systemets konfigurationsfil efter installation.

Från 2013-08-08 stödjer BendCMS att samma användare är inloggad med stöd av användarkaka från flera olika klienter (olika webbläsare och/eller datorer) samtidigt. Max antal samtidiga sessioner kan konfigureras i systemets konfigurationsfil med variablen $sConf['maxSessions'], standardvärdet är 10.

Indexering av mappinnehåll

För att försvåra listning av innehåll i mappar som kan innehålla känslig information bör varje mapp ha en indexfil, tex index.php.

Indexfilen behöver endast innehålla texten Access Denied

Filrättigheter

Alla mappar och filer bör inte ha mer rättigheter än nödvändigt för att systemet ska fungera.

Dom exakta rättigheterna som krävs beror på webbserverns konfiguration men generellt behöver alla filer och mappar vara läs- och skrivbara av ägaren. Ägaren behöver även ha rättighet att exekvera mappar.

 

.htaccess

Filer som begränsar tillgång till filer och mappar via webbservern.

 

Comments to page Säkerhet