[PHP] Het nut van het valideren van REMOTE_ADDR

Pagina: 1
Acties:
  • 313 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Heeft dat wel nut? Ik kom op de PHP site niet meer tegen over REMOTE_ADDR als dit:
'REMOTE_ADDR' The IP address from which the user is viewing the current page.
Nu ben ik bezig aan een stuk code van iemand anders waarin ik zie dat hij/zij REMOTE_ADDR evalueert met een pregmatch waarna een explode op . waarna de afzonderlijke sets gecontroleerd worden op geldige range (0/255). Ik vraag me zelf af of dat het uberhaupt mogelijk is dat PHP een ongeldig IP returned via REMOTE_ADDR. Lijkt me erg stug. Ik moet optimaliseren en als ik er dat stuk eruit laten kan scheelt dat al snel weer 10 lines en een stukje execution time.

Iemand hier wat informatie/gedachtes over?

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Die validatie is sowieso waardeloos bij de overstap naar IPv6. Verder kan je met een ongeldig IP niet eens connecten naar internet, dus een check daarop lijkt me behoorlijk overbodig.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
En wat als je met IPv6 zit? Werkt de validatie niet meer. Ik zou gewoon vertrouwen op de $_SERVER global :)

edit:
Damn you, AtleX

[ Voor 11% gewijzigd door mithras op 03-10-2007 12:18 ]


Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Die controle is wel heel erg bagger, als je dan toch persé controle wilt op een valide IP-adres (omdat je bang bent dat REMOTE_ADDR vervalst wordt oid) gebruik dan ip2long() en long2ip(), en kijk of het resultaat nog steeds hetzelfde is. :)

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
Dat die validatie niet op ging voor IPv6 had ik al door. Tevens keurt deze validatie ook 0.0.0.0 goed wat dus ook al niet klopt. Snap niet waarom ze die validatie er in hebben zitten, wordt ook niet gebruikt voor losse invoer maar alleen voor dat REMOTE_ADDR. Ik dacht misschien bestaat er een securityrisk waar ik geen weet van heb.

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 18:07
Volgens mij kan het alleen als de applicatie de inhoudt van die variabele aanpast.

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 11:40
Ik sluit me bij de rest aan dat zo'n check nogal nutteloos is.

Maar:
iH8 schreef op woensdag 03 oktober 2007 @ 12:12:
Ik moet optimaliseren en als ik er dat stuk eruit laten kan scheelt dat al snel weer 10 lines en een stukje execution time.
Ligt het nou aan mij of is zo'n optimalisatie echt dermate minimaal? Zoiets doe je maximaal 1 keer per request en wat is 10 regels code nou? Als je gaat optimaliseren kijk eerder naar allemaal geneste lussen, recursie. Dingen die een mogelijke polynomiale of exponentiële tijd kosten en probeer dat terug te brengen naar een betere complexiteit.

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
robbert schreef op woensdag 03 oktober 2007 @ 12:25:

Ligt het nou aan mij of is zo'n optimalisatie echt dermate minimaal? Zoiets doe je maximaal 1 keer per request en wat is 10 regels code nou? Als je gaat optimaliseren kijk eerder naar allemaal geneste lussen, recursie. Dingen die een mogelijke polynomiale of exponentiële tijd kosten en probeer dat terug te brengen naar een betere complexiteit.
Ik moet gewoon door hun stuk code heen lopen en kijken wat er beter kan, zo vermeld ik ook netjes dat er volkomen nutteloze stukken instaan. Zoals als dit stukje nu. Maar je hebt gelijk, 't scheelt zowat niets maar wat moet je met iets in je code dat geen nut heeft?

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Padschild
  • Registratie: September 2004
  • Laatst online: 28-11-2020
iH8 schreef op woensdag 03 oktober 2007 @ 12:28:
[...]


Ik moet gewoon door hun stuk code heen lopen en kijken wat er beter kan, zo vermeld ik ook netjes dat er volkomen nutteloze stukken instaan. Zoals als dit stukje nu. Maar je hebt gelijk, 't scheelt zowat niets maar wat moet je met iets in je code dat geen nut heeft?
Tja, ik zou het er ook uithalen, heb je gevraagd aan degene die dit gemaakt heeft wat de bedoeling ervan was? Ik zou namelijk niet kunnen bedenken waarvoor een geldigheidscheck op een IP-adres uberhaupt voor dient.. Kun je volgensmij niet echt faken?

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024
In dit geval zijn de schrijvers niet bereikbaar voor commentaar ;) Boven de pet, teveel hooi op de vork en laten vallen je project. Zie 't wel vaker. Had 't inderdaad graag willen weten.

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Indien eenvoudig weg te halen, gewoon weghalen, het heeft gewoon geen nut. Indien het sterk verweven zit in verder acceptabel werkende maar onoverzichtelijke spaghetticode: laten zitten, want ook qua optimalistie heeft het weinig nut. :P

{signature}


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

Het nut van die controle is er niet. Een IP-adres wordt gewoon als een 32-bits integer (ja, een getal) doorgegeven in een ethernet (of anders) frame (in het geval van IPv4, als 128-bits integer voor IPv6). Vervolgens maakt PHP zelf er een dotted quad van (string), zoals wij een IP-adres normaal bekijken. Ongeldige data *KAN* er niet in, aangezien in 1 byte (8 bits) niks hoger dan 255 past. Voor IPv6 is het verhaal min of meer hetzelfde. Je kan een IP natuurlijk wel vervalsen, maar dat heeft als nadeel dat je geen data terug kan ontvangen. Het levert nog steeds geen ongeldige dotted quad notatie op.

[ Voor 15% gewijzigd door DataGhost op 03-10-2007 15:39 ]


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 18:07
PHP:
1
2
3
4
5
6
<?php
$var = 'REMOTE_ADDR';
echo $_SERVER[$var];
$_SERVER[$var] = 'Geen IP adres';
echo $_SERVER[$var];
?>


Dus voor PHP heeft die REMOTE_ADDR geen enkele betekenis.

Als je alles wil valideren voordat het een database in loopt zou ik die check handhaven. Deze waarde wordt gezet door de webserver en je kan er op vertrouwen dat die waarde altijd correct gezet wordt. Ik heb zelf nog nooit code gezien die waarden uit $_SERVER wijzigt. Je zou even door die code kunnen zoeken om te kijken of er toch niet iets met REMOTE_ADDR ergens gebeurt. Als dat niet zo is kan die check waarschijnlijk wel weg.

[ Voor 41% gewijzigd door Kalentum op 03-10-2007 21:00 ]


Acties:
  • 0 Henk 'm!

  • Chesta
  • Registratie: November 2004
  • Laatst online: 27-08 06:55
Zolang je de waarde in $_SERVER["REMOTE_ADDR"] niet veranderd, hoef je dit ook niet te valideren

End of Transmission


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
rutgerw schreef op woensdag 03 oktober 2007 @ 20:19:
PHP:
1
2
3
4
5
6
<?php
$var = 'REMOTE_ADDR';
echo $_SERVER[$var];
$_SERVER[$var] = 'Geen IP adres';
echo $_SERVER[$var];
?>
:X
Ik ben niet (zo) bekend met PHP, maar had dat niet gewoon read-only moeten zijn? :X

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ja, eigenlijk wel, maar als je die variabele wil wijzigen spoor je uberhaupt al niet. :P

{signature}


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 18:07
Hij was met 'code van iemand anders' bezig. Dan weet je het maar nooit. Ik heb wel eens met code gestoeid die vaag deed en waar ergens via een reference $_POST werd gewijzigd.

[ Voor 42% gewijzigd door Kalentum op 04-10-2007 08:53 ]


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
rutgerw schreef op woensdag 03 oktober 2007 @ 20:19:
PHP:
1
2
3
4
5
6
<?php
$var = 'REMOTE_ADDR';
echo $_SERVER[$var];
$_SERVER[$var] = 'Geen IP adres';
echo $_SERVER[$var];
?>
PHP:
1
2
3
4
5
<?php
echo $_SERVER['REMOTE_ADDR'];
$_SERVER['REMOTE_ADDR'] = 'Geen IP';
echo $_SERVER['REMOTE_ADDR'];
?>

Was voldoende geweest hoor. Die variabele index is nergens voor nodig en brengt alleen maar verwarring.

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
PHP:
1
2
3
4
5
6
7
8
9
function overwriteAndPrintServerVariableForGreatJusticeAndNoObviousReasonExceptForTheLulz($servervar, $newValue) {

    echo 'Before: ', $_SERVER[$servervar];

    //overwrite fgj
    $_SERVER[$servervar] = $newValue;
    
    echo 'After: ', $_SERVER[$servervar];
}

:+

Acties:
  • 0 Henk 'm!

  • kunnen
  • Registratie: Februari 2004
  • Niet online
rutgerw schreef op woensdag 03 oktober 2007 @ 12:23:
Volgens mij kan het alleen als de applicatie de inhoudt van die variabele aanpast.
De wat?

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 11:40
offtopic:
het spelvoutkontrolle

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Zeg, kan het ontopic blijven? :/

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kunnen we weer ontopic?

edit:

DAMN you -NMe- :(
:>

[ Voor 45% gewijzigd door RobIII op 05-10-2007 00:58 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1