sicurezza di sessione in php

0

Questo è stato chiesto un sacco di volte. Sono solo curioso di vedere se il codice sottostante fornisce un livello di sicurezza abbastanza significativo.

Ci sono altri casi che dovrei prendere in considerazione?

Di seguito è solo un esempio; si prega di ignorare eventuali problemi di sintassi; Sto cercando informazioni sull'aspetto di sicurezza del codice.

Poche ipotesi:

  1. Se l'utente non fa nulla in 5 secondi, disconnettilo.
  2. Se l'utente non proviene da somePage.php, disconnettilo.
  3. Se gli indirizzi IP degli utenti cambiano, esegui il logout.

Codice:

<?php
session_start();
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];

if ($time - $_SESSION['time'] > 5)
{
    //function to log out user...//echo "logged Out,Time";
}
elseif ($ip !== $_SESSION['ip'])
{
    //function to log out user...//echo "logged out,IP";
}
elseif ($_SERVER['HTTP_REFERER'] !== "http://server.com/somePage.php")
{
    //function to log out user...//echo "logged out,Refer";
}
else
{
   //do sensitive stuff
}
$_SESSION['time'] = $time;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
?>
    
posta bart2puck 24.03.2014 - 16:26
fonte

2 risposte

1

see if the below code provides a fairly significant level of security

È difficile dare suggerimenti quando non è chiaro quale tipo di attacchi stai cercando di proteggere.

La mia risposta è che queste impostazioni sarebbero noiose.

$_SERVER['HTTP_REFERER'] !== "http://server.com/somePage.php"

Ciò impedirebbe alle persone di mettere in bookmarking efficacemente il tuo sito web. Potrebbe anche essere un vettore di negazione del servizio se qualcuno utilizza il servizio di cross site Request Forgery per reindirizzare gli utenti a questa pagina con il referrer errato; efficacemente la registrazione degli utenti ogni volta che visitano una pagina avvelenata.

$ip !== $_SESSION['ip']

Ciò renderebbe difficile l'utilizzo del tuo sito insieme a una rete anonima come Tor. Niente è più fastidioso di essere disconnessi ogni 10 minuti perché il tuo indirizzo IP è "cambiato".

$time - $_SESSION['time'] > 5

Questo è molto soggettivo. Spetta all'utente proteggere il proprio computer se lo lascia incustodito, non si conosce la situazione di vita reale dell'utente.

    
risposta data 24.03.2014 - 17:17
fonte
1

Sono d'accordo con l'utente2675345: legare la sessione all'IP non è probabilmente una buona idea. Dai uno sguardo qui per i motivi.

Tuttavia potresti associare la sessione a HTTP_USER_AGENT . Vedi Session Hijacking qui per una soluzione completa. Assicurati di aggiungere un salt casuale alla stringa.

Puoi anche dare un'occhiata a questa risposta su SO per un elenco completo di idee generiche per rendere la tua sessione più sicuro.

Nota per mitigare xss usare i HttpSolo cookie.

    
risposta data 28.01.2015 - 14:59
fonte

Leggi altre domande sui tag