Skip to content

[Security] Warn for implementing eraseCredentials #7326

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 26, 2017
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions security/entity_provider.rst
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,12 @@ forces the class to have the five following methods:

To learn more about each of these, see :class:`Symfony\\Component\\Security\\Core\\User\\UserInterface`.

.. caution::

Do not actually implement ``eraseCredentials`` when you load your users directly
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In addition to being "dangerous", this method is very confusing, specially for newcomers. Should we deprecate it from the User interface? Or maybe we should wait for #21068, which could remove the UserInterface.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not really sure about what it does too, maybe improve the docblock on the interface instead of deprecating it? Basically it is there to clear sensitive data from the session right? That's great, except if the subject is a doctrine entity that gets flushed ;-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe change this to warn that you shouldn't clear data here that are mapped to the underlying database?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes that's the obvious thing, I don't want to clear my database stuff. The thing is that I wasn't aware that eraseCredentials was executed every request, so somehow exactly that should be mentioned. This could also be deprecated on the interface, and transformed into an event?

from Doctrine, as changes will be flushed when a user tries to login. As example,
setting ``password`` to ``null`` will be flushed with every login attempt.

What do the serialize and unserialize Methods do?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Expand Down