session opzoeken via ip

Status
Niet open voor verdere reacties.

kenikavanbis

Terugkerende gebruiker
Lid geworden
22 mei 2007
Berichten
2.196
Ik ben opzoek hoe ik alle sesions kan zien vanop server en betreffende niet gewilde sessie kan verwijderen (opruimen)wat automatisch gaat. maar ik wil het als een accound wordt bedreigt word(verdachte activiteit); zijn sessie verwijderen om beveiliging omhoog te halen.
 
Sla de sessie (met het ip, hash, userid etc) op in je database en controleer of de sessie die je in je sessie of cookie hebt opgeslagen ook in de database hebt staan.
 
das het punt niet dat is er al
nu wil ik dat computer a is ingelogd heeft acties gedaan is niet meer aanwezig
computer b probeert iets te doen met logingegevens van computer a => dus vernietiging van alle actieve logins van computer a of een melding dat iemand tracht hem te faken en het accound blockeren en of loggen van veranderingen.
 
Is dit niet iets:

PHP:
session_regenerate_id(true);

Je zou deze op elke pagina kunnen aanroepen. Dat krijgt de gebruiker op elke een andere sessie, (overigens is dit wel overdreven).

Je zou ook elke 5 minuten een nieuwe sessie kunnen aanmaken indien nog ingelogd. Sowieso zou ik je adviseren om na het inloggen een nieuwe sessie te geven.

Succes!
 
Ik vroeg me af als ik het session id meegeef en bij de inlog nog eens controleer

met session id && ip zou ik er moeten zijn denk ik,iemand die mij tegenspreekt als ik een denkfout maak.

hiervoor heb ik een function trubles en zal dus spijtig genoeg ook de constructor er anders moeten uitzien(en een versie nr hoger wat wouw vermijden maar het zij zo).

PHP:
<?php
/**
 * @author Lieven Roegiers
 * @copyright 2009
 * @CMS autosite
 * @REPOS http://code.google.com/p/autosite/source/checkout
 */
//function killsessionuser(){
	
//}
/**
 * @param mixed $user
 * @return void
 */
function setsessionuser($user){
	$_SESSION['user']=serialize($user);
}
/**
 * getsessionuser()
 * @return object User
 */ 
function getsessionuser(){
	return(isset($_SESSION['user']))?unserialize($_SESSION['user']):null;
}
class User extends User_data{
	private $userpath;
	private $name;
	private $pasword;
	private $level;
	private $isuser;//
	private $kkey;
	private $remoteip;
	private $enabled;
	private $hashList =array();
	private $releasetime = 0 ;
	/**
	 * @return void
	 */
	function User($username,$path,$kkey){//TODO session id voor controle
		$this->setUser($username,$path,$kkey);
       
	}
	//<<<<<<<<<<<<<<<<<<<<<<<FUNCTIONS>>>>>>>>>>>>>>>>>>>>>>>>>
	/**
	 * @param string $username
	 * @param string $path 
	 * @param string $kkey
	 */
	function setUser($username,$path,$kkey){
		//$username=(isset($username)&& $username!="")?$username:$_SESSION['login'];
		//parent:: wil go to extends
 		parent::__construct($username,$kkey,$path);
		$this->name =$username;
		$this->userpath =$path.substr($username, 0, 1)."/".$username."/";
		$this->isuser=(is_dir($this->userpath)&& $username!="")? true:false;
	}
	/**
	 * @param string $pasword
	 * @param string $kkey
	 * @param null $c
	 * @return bool
	 */
	function login($pasword,$kkey,$c){
		if ($this->isuser)include $this->userpath."data.php";
	    if(isset($this->name)&&isset($incpass)&& $incpass != "" && ishash("md5",$kkey.$incpass,$pasword)){
			$this->setReleasetime();
			$this->setRemoteip();
			$this->level = $loginniveau;
			$this->enabled = $hasaccess;//login enabled or disabled
			return true;
			//$_SERVER["HTTP_ACCEPT"
		} else { 
			return false;
		}
  	}
  	//<<<<<<<<<<<<<<<<<<<<<<<Getters>>>>>>>>>>>>>>>>>>>>>>>>>
	/**
	 * @return bool
	 */
	function islogin(){
		return (isset($this->name)&& isset($this->releasetime) && $this->releasetime > time()&&$this->isenabled());//$this->isRemoteip());
	}
	/**
	 * @param string $username
	 * @return bool
	 */
	function is_User($username){
		return $this->isuser;
	}
	/**
	 * @return int
	 */
	function getlevel(){
		return($this->islogin())?$this->level:112;// !login = lowerst level 
	}
	/** 
	 * @param int $level
	 * @return bool
	 */
	function ispermitlevel($level){
		return ($level<$this->level);
	}
	/**
	 * @return string do not print it
	 */
	public function getpath(){
		return ($this->islogin())?$this->userpath:"ERROR not login";
	}
  	/**
  	 * @return bool
  	 */
  	private function isenabled(){
  		return true;
  	}
  	//set not public security
	/**
	 * @return bool
	 */
	private function isReleasetime(){
		return ($this->releasetime > time());	
	}
	/**
	 * @return bool
	 */
	private function isRemoteip(){
		if($this->remoteip === $_SERVER['REMOTE_ADDR']){
			return true;
		}else{
			@session_unset();
			return false;
		}
	}
	//<<<<<<<<<<<<<<<<<<<<<<<Setters>>>>>>>>>>>>>>>>>>>>>>>>>
	/**
	 * @return void
	 */
	private function setReleasetime(){
		$this->releasetime = time() + (1 * 1 * 60 * 60);	
	}
	/**
	 * @return void
	 */
	private function setRemoteip(){
		$this->remoteip = $_SERVER['REMOTE_ADDR'];
	}
	/** 
	 * @param string $oldpwx
	 * @return 
	 */
	public function setpassword($oldpwx){
		
	}
	/**
	 * @return string
	 */
	public function __tostring(){
		return "Welkom ".$this->name."releasetime".(($this->releasetime -time() )/60)."min";
	}

	/**
	 * @return testfunction void
	 */
	private function __toprintsession(){
		print_r($_SESSION);
	}
    public function viewUser(&$htmltemplate){
        $template = new Qtemplate($htmltemplate);
    	$template->addtagitem("pic","<img class='userimg' src='%value%' />");
        $i=0;
        $dir="";
        $selectie="";
        if (is_dir($this->userpath)){//.$selectie."/".$dir)){ 
                $asoarr = $this->getdata();
                $asoarr["i"]=++$i;
                $template->setvalues($asoarr);
                print($template->gethtml());
        }
    }
    public function viewUserAndTranslate(&$htmltemplate,&$translationdata){
        $template = new Qtemplate($htmltemplate);
    	$template->addtagitem("pic","<img class='userimg' src='%value%' />");
        $template->translate($translationdata);
        $i=0;
        $dir="";
        $selectie="";
        if (is_dir($this->userpath)){//.$selectie."/".$dir)){ 
                $asoarr = $this->getdata();
                $asoarr["i"]=++$i;
                $template->setvalues($asoarr);
                print($template->gethtml());
        }
    }
    public function make($username){
        
    }
    public function trubles(){
        //TODO here i do somthing
        //set me disable if there is nothing to do
    }
}
?>
 
Na het inloggen moet je gelijk een nieuwe session id aanmaken door middel van :
PHP:
session_regenerate_id(true);

Dit verhoogd al jou beveiliging al aanzienlijk!

Je zou kunnen inbouwen dat 1 gebruiker maar 1 keer ingelogd max zijn.

Wanneer vind jij iets verdachts?
 
twee browsers tegelijk
verschillende ip's op één accound
stelen van session
als men te veel sleutels neemt om in te loggen (betekend een loop brute force attack) na 100 sleutels/3 min worden sleutels die niet kunnen inloggen gemaakt en script vertraagt met 1 sec per 100.
 
Na lang zoeken ben ik acht gekomen dat session_regenerate_id(true) dient om uw session te herzetten. Dit voor stel er is iemand online die geen inlog geeft zaken gedaan heeft op een computer nadien log iemand in dat de data niet gemengd word en dat session die al leefde te gebruiken bij die inlog.dus als je net aan komt lopen is het niet nuttig omdat er dan twee session zijn gemaakt.Maar het was zeer nuttig omdat ik het nog niet kende
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan