login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Beveiliging > IP access list

IP access list

Auteur: Gerard - 18 mei 2009 - 22:32 - Gekeurd door: Koen - Hits: 4901 - Aantal punten: (0 stemmen)



Dit script is bedoeld voor gebruikers die een administratie systeem hebben maar hier graag een extra laag aan beveiliging willen toevoegen. Met behulp van deze functie is het mogelijk om eenvoudig te controleren of een bepaald ip adres toegang dient te krijgen tot een bepaald systeem.

Deze functie dient dus vergezeld te worden van een whitelist. Deze whitelist kan je bijvoorbeeld opslaan in de user tabel in je database, waarbij je dus een whitelist bijhoudt per gebruiker. Mocht het echter volstaan om één centrale whitelist bij te houden dan kan je dit eenvoudig doen in een array in je config.php.

Code:
  1. <?php
  2.  
  3. /**
  4.   * Deze functie geeft de mogelijkheid om te controleren of een bepaalde ip adres toegestaan is volgens de
  5.   * ingestelde whitelist. Deze whitelist dient aangeleverd te worden als een array, waarbij elk element in
  6.   * deze array een aparte accessmask is.
  7.   *
  8.   * De accessmask kan in de volgende formaten aangeleverd worden;
  9.   * - 192.168.0.1 Om één enkel ip adres toe te staan
  10.   * - 192.168.0.* Om één range van ip adressen toe te staan
  11.   * - 192.168.0 Om één range van ip adressen toe te staan, zelfde als hierboven
  12.   *
  13.   * Omdat deze functie gebruik maakt van reguliere expressies is het tevens mogelijk om zelf gebruik te
  14.   * maken van een regex om te controleren. Voorbeelden hiervan zijn:
  15.   * - 192.168.(0|1).* Om twee ranges van ip adressen toe te staan, namelijk 192.168.0.* en 192.168.1.*
  16.   * - 192.168.(13[3-9]|1[4-5][0-9]|16[0-3]).* Om de range 192.168.33.0 tot 192.168.63.255 toe te staan
  17.   *
  18.   * @version 1.0
  19.   * @author Gerard Klomp <gerard.klomp@sitemasters.be>
  20.   * @license http://sitemasters.be/mit-license.txt MIT License
  21.   * @param string $ipaddress Het ip adres wat gecontroleerd dient te worden
  22.   * @param array $whitelist De array met de accessmasks, elke in een apart element
  23.   * @return boolean True wanneer ip is toegestaan, anders False
  24.   */
  25. function isAllowedHost($ipaddress, $whitelist)
  26. {
  27. foreach ($whitelist as $accessmask)
  28. {
  29. $maskparts = explode('.', $accessmask);
  30.  
  31. for ($i = 0; $i < 4; $i++)
  32. {
  33. if ((isset($maskparts[$i]) && $maskparts[$i] == '*') || !isset($maskparts[$i]))
  34. {
  35. $maskparts[$i] = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
  36. }
  37. }
  38.  
  39. if (preg_match('~^' . implode('\.', $maskparts) . '$~', $ipaddress) == 1)
  40. {
  41. return true;
  42. }
  43. }
  44.  
  45. return false;
  46. }

Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Geen reacties (0)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.021s