Pour citer le Django docs:Comment filtrer les paramètres sensibles du POST Django à partir des rapports d'erreur Sentry?
@sensitive_post_parameters('pass_word', 'credit_card_number')
def record_user_profile(request):
UserProfile.create(user=request.user,
password=request.POST['pass_word'],
credit_card=request.POST['credit_card_number'],
name=request.POST['name'])
Dans l'exemple ci-dessus, les valeurs des paramètres et mot_de_passe POST credit_card_number seront cachés et remplacés par des étoiles (******) dans la demande de représentation dans les rapports d'erreurs, tandis que la valeur du paramètre name sera divulguée.
Pour masquer systématiquement tous les paramètres POST d'une demande dans les rapports d'erreur, ne fournissent aucun argument au décorateur de sensitive_post_parameters:
@sensitive_post_parameters()
def my_view(request):
...
En tant que test, j'ai ajouté le code suivant à mon application Django 1.6 :
views.py:
@sensitive_post_parameters('sensitive')
def sensitive(request):
if request.method == 'POST':
raise IntegrityError(unicode(timezone.now()))
return render(request, 'sensitive-test.html',
{'form': forms.SensitiveParamForm()})
forms.py:
class SensitiveParamForm(forms.Form):
not_sensitive = forms.CharField(max_length=255)
sensitive = forms.CharField(max_length=255)
Quand je soumets ce formulaire par POST
, je peux voir les valeurs des deux champs (y compris sensitive
) clair comme le jour dans le rapport Sentry.
Qu'est-ce que je fais mal ici? J'utilise Django 1.6 et Raven 3.5.2.
Merci d'avance pour votre aide!
Aussi lorsque 'DEBUG' est défini sur False? – toabi
Oui, il doit être défini sur False. La ligne exacte dans mon fichier de paramètres est la suivante: DEBUG = (os.environ.get ('DJANGO_DEBUG_MODE', 'off') == 'on') Et actuellement, dans l'environnement Heroku, DJANGO_DEBUG_MODE = désactivé –