Hi Dan

On 1/10/22 6:01 PM, Dan Ackroyd wrote:
How do other languages handle this problem? Or how do they avoid it in
the first place?

Ryan already replied here, but I've also researched this:

- Java is unable to provide parameters in stack traces.
- In C you generally have a core dump which contains everything. Parameters might or might not be available depending on optimization level. - In Python parameters are not provided by default, but it appears to be available via https://docs.python.org/3/library/inspect.html#inspect.getargvalues. - In JavaScript the '.stack' property is non-standard and the behavior depends on the engine. Generally no parameters are provided.
- In Ruby parameters are not provided.

So basically all the other languages I researched do not provide arguments within back traces. I might have missed something, as I am not experienced in all of them.

 From the RFC:
Specifically the back trace collection should be updated to use an object of 
class
\SensitiveParameter as the value for all parameters that are marked with the
\SensitiveParameter attribute.

To me....these words are not clear. Does the following sentence say
the same thing?

"When the backtrace is generated, any parameter that has a
'SensitiveParameter' attribute will not have it's value stored in the
backtrace, but instead will be replaced with an SensitiveParameter
object.

If so, the RFC could be updated to be clearer.....if not, then the RFC
should be updated to be clearer.

Yes, your phrasing is correct. It's much better than mine, so I've taken it.

Also, having parameters replaced with another type doesn't seem
obviously correct. There should probably be some words justifying why
that is the correct thing to do, rather than just replacing any values
with "****REDACTED***" or other simple behaviour.

I updated the RFC with a new "Choice of replacement value" section:

https://wiki.php.net/rfc/redact_parameters_in_back_traces#choice_of_replacement_value

On shared web hosting, the customer might not be able to configure it.

My personal opinion is that shared web hosting shouldn't be a thing
that exists in 2022. And definitely shouldn't be used for anything
where secrets need to be maintained. Yeah shared hosts might have a DB
they can connect to, but those credentials should only be usuable from
the shared host to the DB.

While I agree with regard to shared web hosting generally, I'd rather see a customer using a shared web hosting than attempting to self-host and running outdated vulnerable PHP versions.

Also while PDO is the prominent example at the beginning of the RFC, other functions are also affected. As an example 'ldap_bind()' might include a user's password when the directory is unavailable, possibly logging the user's password within Sentry or whatever error collector is in use.

Best regards
Tim Düsterhus
Developer WoltLab GmbH

--

WoltLab GmbH
Nedlitzer Str. 27B
14469 Potsdam

Tel.: +49 331 96784338

duester...@woltlab.com
www.woltlab.com

Managing director:
Marcel Werk

AG Potsdam HRB 26795 P

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

Reply via email to