| | 6 | The implementation plan has changed after some reviews: |
| | 7 | |
| | 8 | 1 - Create two utility functions called **check_password_with_timing_attack_mitigation** and **acheck_password_with_timing_attack_mitigation** inside django.contrib.auth.__init__.py. |
| | 9 | 2 - Update **django.contrib.auth.handlers.modwsgi.check_password** to use ''check_password_with_timing_attack_mitigation''. |
| | 10 | 3 - Refactor authenticate and aauthenticate in **django.contrib.auth.backends.py** to use ''check_password_with_timing_attack_mitigation , acheck_password_with_timing_attack_mitigation '' . |
| | 11 | 4 - Adding some test to make sure that hasher is called once for inactive_user and custom_user without is_active attribute |