That would be easy to solve by just adding a non_overwrite flag to the 
vars and thrus forbid the vars from get/post to override vars in the 
varspace that come from programming and not from get/post...

One would keep the global vars but would also have the security of the 
existing/declared vars be protected from overwrite (only get/post vars 
would be allowed to be overwriten between page initializations)...

Cheers,
Luis Ferro

Matt Parlane wrote:

>Posting the variables might solve the problem in this case, but remember
>that this is just an example, and I'm sure any creative mind could come up
>with a whole heap of ways you could exploit something like this.
>
>On the other hand though, you don't have to use it.  If you are confident
>you can write an application without using the new superglobal arrays (and
>it is conceivably possible), you can just turn register_globals on.  It's
>just a choice which was made by the PHP developers (rightly so I believe).
>
>Matt
>
>"Then" <[EMAIL PROTECTED]> wrote in message
>[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
>  
>
>>Hi
>>
>>At the cost of sounding dense...wouldn't POSTing the variables solve the
>>problem. Then the user would not see them in the URL.
>>
>>
>>[EMAIL PROTECTED] (Matt Parlane) wrote in
>>[EMAIL PROTECTED]:">news:[EMAIL PROTECTED]:
>>
>>    
>>
>>>Hi...
>>>
>>>The problem comes when you are mixing variables recieved from the HTTP
>>>request, and your own user variables.  Consider the following code:
>>>
>>>function authenticate_user(){
>>>  if($password == 'secret'){
>>>    $authenticated = 'yes';
>>>  }
>>>  return $authenticated;
>>>}
>>>
>>>If someone passes the variable authenticated=yes in the url request
>>>string, the user will be authenticated no matter whether their password
>>>matches or not.  This is obviously a simplified example, and I'd hope
>>>that no programmer would ever do this, but things like have been known
>>>to happen, and there have already been exploits for it.
>>>
>>>The logic behind the change is that it is really not much extra work to
>>>type $_GET['something'] than just $something, and it is infinitely more
>>>secure - so you should write your scripts using the $_REQUEST variables
>>>whenever possible.
>>>
>>>Hope that helps...
>>>
>>>Matt
>>>
>>>"Then" <[EMAIL PROTECTED]> wrote in message
>>>[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
>>>      
>>>
>>>>Hi All
>>>>
>>>>I am a PHP newbie. I don't understand why global variables are turned
>>>>off
>>>>        
>>>>
>>>by
>>>      
>>>
>>>>default in PHP4.2.0... something to do with security. Could some one
>>>>        
>>>>
>>>please
>>>      
>>>
>>>>help me understand how it's a security issue. Thanks
>>>>        
>>>>
>>>
>>>      
>>>
>>
>>--
>>Lots of Luck
>>theN
>>[EMAIL PROTECTED]
>>    
>>
>
>
>
>  
>




-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to