Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #20301 > unrolled thread
| Started by | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| First post | 2016-02-08 13:35 +0100 |
| Last post | 2016-02-09 16:44 +0100 |
| Articles | 16 — 6 participants |
Back to article view | Back to it.comp.www.php
verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-08 13:35 +0100
Re: verificare che il client appartenga alla stessa rete del server g4b0 <gabriele.brosulo@gmail.com> - 2016-02-08 13:44 +0100
Re: verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-08 17:27 +0100
Re: verificare che il client appartenga alla stessa rete del server Alessandro Pellizzari <shuriken@amiran.it> - 2016-02-08 21:23 +0000
Re: verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-09 07:56 +0100
Re: verificare che il client appartenga alla stessa rete del server Leonardo Serni <lserni@gmail.com> - 2016-02-09 08:13 +0100
Re: verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-09 16:32 +0100
Re: verificare che il client appartenga alla stessa rete del server Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-02-09 16:33 +0100
Re: verificare che il client appartenga alla stessa rete del server fmassei@gmail.com - 2016-02-09 07:38 -0800
Re: verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-09 18:06 +0100
Re: verificare che il client appartenga alla stessa rete del server fmassei@gmail.com - 2016-02-09 09:13 -0800
Re: verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-09 19:09 +0100
Re: verificare che il client appartenga alla stessa rete del server Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-02-08 14:03 +0100
Re: verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-09 15:38 +0100
Re: verificare che il client appartenga alla stessa rete del server Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-02-09 16:36 +0100
Re: verificare che il client appartenga alla stessa rete del server alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-02-09 16:44 +0100
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-08 13:35 +0100 |
| Subject | verificare che il client appartenga alla stessa rete del server |
| Message-ID | <n9a22j$186m$1@gioia.aioe.org> |
Per il momento ho risolto così:
function same_network($ip1, $ip2)
{
return __($ip1) == __($ip2);
}
function __($ip)
{
return substr($ip, 0, strrpos($ip, '.') + 1);
}
if (same_network($_SERVER['SERVER_ADDR'], $_SERVER['REMOTE_ADDR'])) { //
se server e client appartengono alla stessa rete
// fai qualosa
}else{
echo 'Autorizzazione negata';
exit(1);
}
Però mi sembra un approccio non proprio appropriato (convenzionale).
Non è che php ha già qualche funzione ad hoc per queste cose?
Ho dato un occhiata qui
http://php.net/manual/en/ref.network.php
e poi qui
http://openskill.info/infobox.php?ID=849
In pratica bisogna usare le netmask, fare dei confronti binari, ecc.
Ma prima di imbattermi in inutili *lavaggi mentali*, volevo sapere se,
al posto della mia funzione *same_network()*, esiste una funzione php
già pronta, che fa quello che chiedo?
O comunque un esempio che indica l'approccio più corretto...
[toc] | [next] | [standalone]
| From | g4b0 <gabriele.brosulo@gmail.com> |
|---|---|
| Date | 2016-02-08 13:44 +0100 |
| Message-ID | <56B88DC9.8010901@gmail.com> |
| In reply to | #20301 |
On 08/02/2016 13:35, alex wrote: > In pratica bisogna usare le netmask, fare dei confronti binari, ecc. > Ma prima di imbattermi in inutili *lavaggi mentali*, volevo sapere se, > al posto della mia funzione *same_network()*, esiste una funzione php > già pronta, che fa quello che chiedo? > O comunque un esempio che indica l'approccio più corretto... Be, mettere in AND binario una netmask con un indirizzo IP non mi pare un *lavaggio mentale*... $network_addr = (ip2long($ip) & ip2long($network_mask)); e poi confronti le $network_addr -- g4b0, linux user n. 369000 http://brosulo.net
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-08 17:27 +0100 |
| Message-ID | <n9afm9$27e$1@gioia.aioe.org> |
| In reply to | #20302 |
Il 08/02/2016 13:44, g4b0 ha scritto: > Be, mettere in AND binario una netmask con un indirizzo IP non mi pare > un*lavaggio mentale*... > > $network_addr = (ip2long($ip) & ip2long($network_mask)); > > e poi confronti le $network_addr E come $network_mask cosa devo specificare? In pratica voglio sapere se due computer sono nella stessa casa: uno in cucina, e un in salotto. Naturalmente nel mezzo c'è il classico router. Perdonate la mia eventuale ignoranza :-P
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2016-02-08 21:23 +0000 |
| Message-ID | <dhsfadFhoevU2@mid.individual.net> |
| In reply to | #20304 |
Il Mon, 08 Feb 2016 17:27:54 +0100, alex ha scritto: > E come $network_mask cosa devo specificare? La netmask che hai impostato sul router. Per esempio 255.0.0.0 o 255.255.255.0 o 255.255.255.128, ecc. ecc. Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-09 07:56 +0100 |
| Message-ID | <n9c2j2$dh0$1@gioia.aioe.org> |
| In reply to | #20305 |
Alessandro Pellizzari <shuriken@amiran.it> ha scritto: > Il Mon, 08 Feb 2016 17:27:54 +0100, alex ha scritto: > >> E come $network_mask cosa devo specificare? > > La netmask che hai impostato sul router. Per esempio 255.0.0.0 o > 255.255.255.0 o 255.255.255.128, ecc. ecc. > > Bye. > C'è un modo per ottenerla automaticamente? -- ----Android NewsGroup Reader---- http://usenet.sinaapp.com/
[toc] | [prev] | [next] | [standalone]
| From | Leonardo Serni <lserni@gmail.com> |
|---|---|
| Date | 2016-02-09 08:13 +0100 |
| Message-ID | <i94jbbpettch0943uvcs63gp1cs3hhv9o5@L.Serni> |
| In reply to | #20306 |
On Tue, 9 Feb 2016 07:56:34 +0100 (GMT+01:00), alex <1j9448a02@lnx159sneakemail.com.invalid> wrote: >Alessandro Pellizzari <shuriken@amiran.it> ha scritto: >> Il Mon, 08 Feb 2016 17:27:54 +0100, alex ha scritto: >>> E come $network_mask cosa devo specificare? >> La netmask che hai impostato sul router. Per esempio 255.0.0.0 o >> 255.255.255.0 o 255.255.255.128, ecc. ecc. >C'è un modo per ottenerla automaticamente? In generale no, perché è la risposta alla domanda "Quanto è larga la mia rete?", che è dentro di te (oltre che dentro al router). Si può provare a fare una interrogazione DHCP - o sfruttare il DHCP già presente sul server. Oppure andare a occhio e mettere 255.255.255.0, che nel 99% dei casi in casa va bene. Leonardo -- Now suppose -just suppose- I could show you a way to manufacture a wall that would do the same job... but was only one inch thick.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-09 16:32 +0100 |
| Message-ID | <n9d0pm$2h8$1@gioia.aioe.org> |
| In reply to | #20307 |
Il 09/02/2016 08:13, Leonardo Serni ha scritto: > On Tue, 9 Feb 2016 07:56:34 +0100 (GMT+01:00), alex <1j9448a02@lnx159sneakemail.com.invalid> wrote: > >> Alessandro Pellizzari <shuriken@amiran.it> ha scritto: >>> Il Mon, 08 Feb 2016 17:27:54 +0100, alex ha scritto: > >>>> E come $network_mask cosa devo specificare? > >>> La netmask che hai impostato sul router. Per esempio 255.0.0.0 o >>> 255.255.255.0 o 255.255.255.128, ecc. ecc. > >> C'è un modo per ottenerla automaticamente? > > In generale no, perché è la risposta alla domanda "Quanto è larga la mia rete?", che > è dentro di te (oltre che dentro al router). > > Si può provare a fare una interrogazione DHCP - o sfruttare il DHCP già presente sul > server. Oppure andare a occhio e mettere 255.255.255.0, che nel 99% dei casi in casa > va bene. > > Leonardo > ok, cmq dimmi che ne pensi della mia soluzione (vedi l'altro post)
[toc] | [prev] | [next] | [standalone]
| From | Andrea D'Amore <anddam+NOSPAM@brapi.net> |
|---|---|
| Date | 2016-02-09 16:33 +0100 |
| Message-ID | <n9d0rn$j9k$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20307 |
On 2016-02-09 07:13:28 +0000, Leonardo Serni said: > In generale no, perché è la risposta alla domanda "Quanto è larga la > mia rete?", che > è dentro di te (oltre che dentro al router). Prenoto i diritti di "QueloNet". > Si può provare a fare una interrogazione DHCP - o sfruttare il DHCP già > presente sul > server. Oppure andare a occhio e mettere 255.255.255.0, che nel 99% dei > casi in casa > va bene. Dato che stiamo parlando di una applicazione web non stiamo uscendo dal seminato? Se vuole servire solo i client di una certa rete perché non mettere il server web in ascolto solo su questa? -- Andrea
[toc] | [prev] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2016-02-09 07:38 -0800 |
| Message-ID | <08d06435-1950-430f-9b20-23ca047a389a@googlegroups.com> |
| In reply to | #20310 |
On Tuesday, February 9, 2016 at 10:33:12 AM UTC-5, Andrea D'Amore wrote: > Se vuole servire solo i client di una certa rete perché non mettere il > server web in ascolto solo su questa? > questo. Ciao!
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-09 18:06 +0100 |
| Message-ID | <n9d6a3$dde$1@gioia.aioe.org> |
| In reply to | #20312 |
Il 09/02/2016 16:38, fmassei@gmail.com ha scritto: > On Tuesday, February 9, 2016 at 10:33:12 AM UTC-5, Andrea D'Amore wrote: >> Se vuole servire solo i client di una certa rete perché non mettere il >> server web in ascolto solo su questa? >> > > questo. > > Ciao! > Il mio server contiene più web-apps; per ognuna voglio configurare diritti di accesso differeniti. http://nas/guide-al-uso/ può accedere chi vuole http://nas/dati-personali/ può accedere solo utenti della lan ecc.
[toc] | [prev] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2016-02-09 09:13 -0800 |
| Message-ID | <14e10543-8208-4e9f-93ec-5455cc49d9fa@googlegroups.com> |
| In reply to | #20314 |
On Tuesday, February 9, 2016 at 12:06:16 PM UTC-5, alex wrote: > Il 09/02/2016 16:38, fmassei@gmail.com ha scritto: > > On Tuesday, February 9, 2016 at 10:33:12 AM UTC-5, Andrea D'Amore wrote: > >> Se vuole servire solo i client di una certa rete perché non mettere il > >> server web in ascolto solo su questa? > >> > > > > questo. > > > > Ciao! > > > > Il mio server contiene più web-apps; per ognuna voglio configurare > diritti di accesso differeniti. > http://nas/guide-al-uso/ può accedere chi vuole > http://nas/dati-personali/ può accedere solo utenti della lan > ecc. Non usare le cartelle, che non c'ha senso: configura dei virtualHost e usa serverName diversi, tipo guide.nas e dati.nas Ciao!
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-09 19:09 +0100 |
| Message-ID | <n9da17$k2p$1@gioia.aioe.org> |
| In reply to | #20315 |
Il 09/02/2016 18:13, fmassei@gmail.com ha scritto: > Non usare le cartelle, che non c'ha senso: configura dei virtualHost e usa > serverName diversi, tipo guide.nas e dati.nas sarebbe la cosa più giusta, ma il mio synology non lo permette, almeno credo...
[toc] | [prev] | [next] | [standalone]
| From | Andrea D'Amore <anddam+NOSPAM@brapi.net> |
|---|---|
| Date | 2016-02-08 14:03 +0100 |
| Message-ID | <n9a3nq$7kn$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20301 |
On 2016-02-08 12:35:32 +0000, alex said:
> if (same_network($_SERVER['SERVER_ADDR'], $_SERVER['REMOTE_ADDR'])) {
> // se server e client
[…]
> }else{
> echo 'Autorizzazione negata';
> exit(1);
> }
Secondo me è un lavoro che devi far fare al webserver o al proxy che ci
metti davanti, non all'applicazione.
--
Andrea
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-09 15:38 +0100 |
| Message-ID | <n9ctm3$1rs8$1@gioia.aioe.org> |
| In reply to | #20303 |
Il 08/02/2016 14:03, Andrea D'Amore ha scritto:
> On 2016-02-08 12:35:32 +0000, alex said:
>
>> if (same_network($_SERVER['SERVER_ADDR'], $_SERVER['REMOTE_ADDR'])) {
>> // se server e client
> […]
>> }else{
>> echo 'Autorizzazione negata';
>> exit(1);
>> }
>
> Secondo me è un lavoro che devi far fare al webserver o al proxy che ci
> metti davanti, non all'applicazione.
>
Appunto.
Cmq vedi un po' se va bene quello che ho fatto.
-------> .htaccess
RewriteEngine On
RewriteRule ^(.*)$ routing/route.php [L]
--------> routing/route.php
class NetworkAddress
{
private $networkMask;
function __construct($networkMask = '255.255.255.0')
{
parent::__construct();
$this->networkMask = $networkMask;
}
/**
* Restituisce l'indirizzo di rete relativo ad un IP
* applicandone la maschera.
*
* @param $ip
* @return int
*/
function get($ip)
{
return ip2long($ip) & ip2long($this->networkMask);
}
}
$_ = new NetworkAddress();
if ($_->get($_SERVER['SERVER_ADDR']) ==
$_->get($_SERVER['REMOTE_ADDR'])) { // se server e client appartengono
alla stessa rete
$filename =
parse_url( // serve per eliminare dall'uri eventuali parametri (?abc=...)
$_SERVER['REQUEST_URI'],
PHP_URL_PATH
)
;
require "../web_apps/$filename"; // caricamento dell'applicazione vera
e propria
}else{
echo 'Non sei autorizzato';
}
Quindi se digito http://localhost/bimba/index.php si apre la web-app
*bimba*.
Cosa ne pensi?
[toc] | [prev] | [next] | [standalone]
| From | Andrea D'Amore <anddam+NOSPAM@brapi.net> |
|---|---|
| Date | 2016-02-09 16:36 +0100 |
| Message-ID | <n9d114$jdb$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20308 |
On 2016-02-09 14:38:59 +0000, alex said: > Quindi se digito http://localhost/bimba/index.php si apre la web-app *bimba*. > Cosa ne pensi? Che Apache HTTPD non mi piace e lo evito, comunque stai facendo solo una riscrittura lì, quello che sto dicendo io è, se ad esempio la tua rete è 192.168.0.0, di dichiarare il bind per il vserver (o come lo chiama httpd) solo l'interfaccia relativa e amen. Quando stai servendo una richiesta sai già che il client appartiene alla rete, hai evitato il problema a monte. -- Andrea
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-02-09 16:44 +0100 |
| Message-ID | <n9d1gc$43s$1@gioia.aioe.org> |
| In reply to | #20303 |
Il 08/02/2016 14:03, Andrea D'Amore ha scritto:
> On 2016-02-08 12:35:32 +0000, alex said:
>
>> if (same_network($_SERVER['SERVER_ADDR'], $_SERVER['REMOTE_ADDR'])) {
>> // se server e client
> […]
>> }else{
>> echo 'Autorizzazione negata';
>> exit(1);
>> }
>
> Secondo me è un lavoro che devi far fare al webserver o al proxy che ci
> metti davanti, non all'applicazione.
>
e comunque se l'accesso avviene da un computer al di fuori della rete,
quale codice d'errore è meglio generare
401 Unauthorized?
403 Forbidden?
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web