Toon posts:

Runtime 'vernieuwingen' PHP 4.10 omzeilen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Met PHP 4.10 en nieuwer zullen Register_globals en errorreporting uitstaan. Dit is een ramp als je oude projecten ervan uitgaan dat deze twee zaken aanstaan (vooral Register_globals). (Natuurlijk heeft de nieuwe setting zijn voordelen, maar ga maar eens 20 production sites omzetten... |:( )
; - register_globals = Off [Security, Performance]
; Global variables are no longer registered for input data (POST, GET, cookies,
; environment and other server variables). Instead of using $foo, you must use
; you can use $_REQUEST["foo"] (includes any variable that arrives through the
; request, namely, POST, GET and cookie variables), or use one of the specific
; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
; on where the input originates. Also, you can look at the
; import_request_variables() function.
; Note that register_globals is going to be depracated (i.e., turned off by
; default) in the next version of PHP, because it often leads to security bugs.
; Read http://php.net/manual/en/security.registerglobals.php for further
; information.
; - display_errors = Off [Security]
; With this directive set to off, errors that occur during the execution of
; scripts will no longer be displayed as a part of the script output, and thus,
; will no longer be exposed to remote users. With some errors, the error message
; content may expose information about your script, web server, or database
; server that may be exploitable for hacking. Production sites should have this
; directive set to off.
Welke manieren zijn er om Runtime toch register_globals aan te zetten en ook error_reporting aan te zetten?

Verwijderd

waarom zou je display errors aan willen hebben behalve dan bij debuggen van je script?

Verwijderd

Topicstarter
True true, het gaat me ook meer om de register_globals. Bij onze testserver kan ik de settings zelf veranderen. Ik krijg alleen koude rillingen als ik denk aan Vuurwerk's policy in combinatie met een PHP 4.10 install
("sorry meneer, we laten altijd alle standaard settings staan")

Daar gaat je code :(

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 10-09 23:27
Op maandag 17 december 2001 21:24 schreef pioneer5 het volgende:
Met PHP 4.10 en nieuwer zullen Register_globals en errorreporting uitstaan. Dit is een ramp als je oude projecten ervan uitgaan dat deze twee zaken aanstaan (vooral Register_globals). (Natuurlijk heeft de nieuwe setting zijn voordelen, maar ga maar eens 20 production sites omzetten... |:( )
[..]

Welke manieren zijn er om Runtime toch register_globals aan te zetten en ook error_reporting aan te zetten?
met 4.1.0 staan ze standaard gewoon aan hoor. Ik weet niet waar je vandaan hebt dat register_globals uit zou staan, maar dat is gewoon _NIET_ waar.
PHP 4.1.0 still defaults to have register_globals set to on. It's a transitional version, and we encourage application authors, especially public ones which are used by a wide audience, to change their applications to work in an environment where register_globals is set to off. Of course, they should take advantage of the new features supplied in PHP 4.1.0 that make this transition much easier.
Pas in nieuwe (grote) versies (dus php 4.2.0 ofzo) staat het standaard uit. En het is 1 instelling in je php.ini dus lijkt me niet zo heel veel werk omdat ff te veranderen :)

Verwijderd

Topicstarter
Ok, mijn fout: het staat nog aan
maar het gaat uit, en dat is voor mij persoonlijk een hele akelige gedachte. Vooral omdat ik geen PHP.INI heb om aan te passen, wij draaien hosted bij Vuurwerk en die zijn niet flexibel :(

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 10-09 23:27
Bovendien is het trouwens veel veiliger om de (oude) $HTTP_GET_VARS[] en $HTTP_POST_VARS[] te gebruiken. Die worden in nieuwe versies ook nog steeds ondersteund :).
* Martin Sturm heeft tot nu toe in alle php scripts die variabelen gebruikt, dus heeft geen problemenen met het feit dat register_globals standaard off zal staan :)

  • [ti]
  • Registratie: Februari 2000
  • Niet online
en je kunt toch nog altijd ini_set("register_globals", 1); doen bovenaan je script?

Verwijderd

Topicstarter
Ik ga 'ini_set("register_globals", 1)' eens proberen. Kijk het maakt mij niet uit dat het nu default uit staat, maar ik wil zelf de optie hebben om het zelf aan te zetten.
Dat is een keuze waarvan ik denk dat ik die zelf wel mag maken ipv dat het PHP team het je oplegt.
Vervolgprojecten worden natuurlijk met de nieuwe manier geprogrammeerd.

Verwijderd

Topicstarter
Dit zijn mijn favoriete topics
degene waar ik zelf het antwoord in mag posten :)

(Niet dat ik het zelf heb bedacht, in de nieuwsgroep van PHP zelf was men zo aardig)

als je je oude 'crappy' code (die uitgaat van register_globals = ON) wil laten werken zul je er dit boven moeten plaatsen

extract($_GET);

Wat hetvolgende doet
> for all in $_GET
> {
> $[varname] = $_GET[varname]
> }

Ik zelf ga dus extract($_REQUEST) gebruiken om oude sites te patchen

opmerking:
ini_set mocht niet over register_globals,trouwens

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 10-09 23:27
Op maandag 17 december 2001 22:30 schreef pioneer5 het volgende:
Ik ga 'ini_set("register_globals", 1)' eens proberen. Kijk het maakt mij niet uit dat het nu default uit staat, maar ik wil zelf de optie hebben om het zelf aan te zetten.
Dat is een keuze waarvan ik denk dat ik die zelf wel mag maken ipv dat het PHP team het je oplegt.
Vervolgprojecten worden natuurlijk met de nieuwe manier geprogrammeerd.
PHP team heeft dit besloten omdat er veel commentaar was gekomen op de huidige situatie. Zoals het nu is, bevorderd het in feite de ontwikkeling van onveilige applicaties. Dat wil niemand :). Dus hebben ze na lang overwegen besloten om het te gaan veranderen, en dat heeft dus geresulteerd in deze aanpassingen. Voor de geschiedenis hiervan verwijs ik je naar de Bugtraq mailinglist, en naar de php mailinglists :)
Pagina: 1