Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    142

    Verificare se utente accede alla intranet da interno o da esterno

    Ciao, come da titolo, sto creando un portale intranet in PHP e vorrei sapere come è possibile verificare se un utente vi accede dall'interno della struttura aziendale o da fuori. Grazie in anticipo

  2. #2
    potresti provare a vedere se $_SERVER['REMOTE_ADDR'] contiene un ip della intranet o meno
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    142
    si, avevo pensato di usare $_SERVER['REMOTE_ADDR'] per raccogliere gli ip client che accedono, ma non so come e con cosa confrontarlo

  4. #4
    devi avere un elenco di tutte le reti della tua intranet (ip/netmask) e poi usare calcoli specifici tipo questo https://gist.github.com/tott/7684443 per vedere se l'ip fa parte della rete o meno.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    142
    ok, dovrebbe essere proprio quello che cercavo... solo un paio di domande sullo script che mi hai consigliato:
    $range e $netmask sono dati che posso recuperare in automatico (se si come li recupero?) o devo impostarli a mano
    (se così dove li trovo?)... sono a digiuno di reti!

  6. #6
    no il concetto è il seguente:

    diciamo che $_SERVER['REMOTE_ADDR'] dia un ip del tipo "10.10.10.123", la tua domanda è "ma 10.10.10.123 è della mia intranet?"

    Ora, il problema lo sposti sulla intranet: "come faccio a capire che l'ip appartiente alla mia intranet?" una soluzione è dire "un ip appartiene alla mia intranet se appartiene ad una delle reti definite nella intranet". Quindi diciamo che la tua intranet è composta dalle seguenti reti:

    10.10.8.0/24
    10.10.9.0/24
    10.10.10.0/24
    10.10.11.0/24

    dato lo script del link prima (che è il primo che ho trovato su google, del cui funzionamento non garantisco ma così ad occhio mi sembra corretto), un tuo codice potrebbe essere:

    Codice PHP:

    $clientIp 
    "10.10.10.123"//da sostiturie con $_SERVER['REMOTE_ADDR']

    $intranet = [
    "10.10.8.0/24",
    "10.10.9.0/24",
    "10.10.10.0/24",
    "10.10.11.0/24"
    ];

    $result false;
    foreach(
    $intranet as $range)
    {
    if(
    ip_in_range($ip,$range)){
    $result true;
    break;
    }
    }

    if(
    $result){
    echo 
    "ip $ip in intranet";
    }else{
    echo 
    "ip $ip non è in intranet";

    per sapere quali reti costituiscono la tua intranet, il modo piu efficace è mappare nello script a mano tutte le reti (tramite file di configurazione? tramite inserimento dati via interfaccia web? leggendo da un db? ) perchè non puoi sapere a priori in maniera semplice dalla macchina su cui esegui lo script quali sono le reti della intranet

    più o meno una cosa del genere.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    142
    Tutto abbastanza chiaro... ma siccome il portale dovrà risiedere sulla rete intranet, non esiste un modo che mi dice "guarda, sto girando su questa rete" e in base al range che mi da fare il controllo con REMOTE ADDRESS? Nel caso in cui questa cosa non sia fattibile e debba necessarimanete mettere in $intranet a mano tutti gli indirizzi disponibili, come li recupero questi?

  8. #8
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Mi sembra che ti stia complicando la vita un po' troppo.

    Avete una LAN in azienda e basta, o chissà quale configurazione strana e complessa?
    Al 99% avrete una rete di classe C.
    In ogni caso è molto più facile capire se la rete è estera o interna, basta la prima parte dell'IP in decimale per deciderlo

  9. #9
    Allora,

    dipende da quanto è complicata la intranet. Per esempio, dire, come fa MySQL, che al 99% si avrà una rete di class C (255.255.255.0) è vero nelle piccole realtà, è falso in realtà medio grosse o che hanno collegamenti intersede ad esempio (che sempre intranet stiamo parlando). In quei casi, possono essere tanti classi C, può essere una classe B, ci può essere di tutto.

    La cosa piu semplice è avere un file di configurazione (ini?) in cui uno scrive tutte le reti della intranet (si può fare che di default si prendono quelle della scheda di rete della macchina su cui gira l'applicativo) e fare il check con quelle.

    Per sapere che reti vedi nell'applicativo puoi ad esempio parsarti i comandi "ifconfig" o "ipconfig" eseguiti in shell

    cmq la cosa migliore è un file di configurazione e/o una interfaccia web dedicata di configurazione della cosa. ihmo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da fablan Visualizza il messaggio
    Tutto abbastanza chiaro... ma siccome il portale dovrà risiedere sulla rete intranet, non esiste un modo che mi dice "guarda, sto girando su questa rete" e in base al range che mi da fare il controllo con REMOTE ADDRESS? Nel caso in cui questa cosa non sia fattibile e debba necessarimanete mettere in $intranet a mano tutti gli indirizzi disponibili, come li recupero questi?
    Scusa ma ribadisco.
    Il mondo è diviso in "internet" e "reti locali" (non routabili), ragionevolmente la tua LAN.
    Che questa sia semplice o complicata non cambia nulla.
    Se l'indirizzo IP inizia per 10.x.x.x, oppure 172.16.x.x, oppure 192.168.x.x allora NON è un indirizzo internet.
    Non serve chissà quale logica complessa.

    A MENO CHE non abbiate fatto una rete internet (non intranet) con dei gateway boundary che rimappano gli indirizzi, ma finora mi è capitato di vedere una cosa del genere solo una volta

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.