I know that my opinion probably means diddly but my %2 is free. ;)

If I am understanding all of this right, if the raw varible contains
some shell code like "\x90\x90\x90\xab\xa3\x54\x77" and I do something
like $var = filter(GET,'foo',FILTER_NUMBER); $var would contain
something like " 90 90 90 3 54 77". That still isn't valid, I filtered
it for a number because that's what I am expecting. Valid values would
be something like "12345" or "123.456".

There are some cases where a filter would be nice. Like for a textarea
where a user might insert some HTML, <script> tags, etc. You could strip
out the tags, and accept the rest.

But if I am expecting a field to contain a number I am going to be
looking for an int or a float. If I am expecting a phone number I would
look for something that has a max length, a min length, must contain
numbers, and only limited set of alpha characters (-,+,.,<SP>).

I want to know TRUE or FALSE does this varible contain what I am expect
it to. If FALSE I don't care what *is* there, as far as I'm concerned it
isn't valid. I probably can't trust it even if it is "filtered". I am
going to return some kind of error, and request that they reenter the
data.

Jess


-----Original Message-----
From: Rasmus Lerdorf [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, February 01, 2005 5:55 PM
To: Nick Loeve
Cc: internals@lists.php.net
Subject: Re: [PHP-DEV] PHP 5.1

Nick Loeve wrote:
> 
>> Rasmus Lerdorf wrote:
>>
>>> I don't actually see it as a per-script thing.  Obviously the ini 
>>> would be per-dir Apache configurable, but I see this as being 
>>> something set across the board on a dedicated server that defines 
>>> the security policy of that server.
>>
>>
> Isn't that something you can use mod_security for? I don't know of the

> availability of that module on a standard host, but on a dedicated 
> server you could install it.

No, because we don't actually want to lose the raw data.  We need to
save the raw data internally in PHP and make it available via the filter
function.  So if a strict default ini filter is enabled you would have
something like this:

   GET /script.php?foo=<xss hack>123 Hello</xss hack>

   echo $_GET['foo'];

Would output:  123 Hello

   echo filter(GET,'foo',FILTER_RAW);

Would output: <xss hack>123 Hello</xss hack>

   echo filter(GET,'foo',FILTER_NUMBER);
 
Would output:  123

The extra spaces are intentional.  Stripped characters are replaced with
a single space.  So if you had: abc<font size=10>def You would end up
with: abc def

-Rasmus

--
PHP Internals - PHP Runtime Development Mailing List To unsubscribe,
visit: http://www.php.net/unsub.php

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to