Request: Fix Referrer getter for malformed data + test #210
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What problem is PR solving
Method
\Nette\Http\Request::getReferer()
throwsLogicException
when is called HTTP Request with malformedReferer
header.curl -v -H 'Referer://///' https://example.com/
It's wrong, because:
Logic
type, but origin of error is only invalid user's input – developer here can't to prevent throw exception,@throws
, it doesn't enough),Normal use of Referer value is fo logging:
We can't to wrap whole row to
try/catch
, because it cause to skip log event. Developer must to separate getter call:What PR suggest
PR is suggesting to transmute Exception to Notice, return
null
and never throw Exception.Developer always can to read raw header by access through
$request->getHeader('Referer');
Security
Potentially this bug can be abused to intentionally bypassing log of user's activity, because in most cases is
Referer
value used for auditing done operations.