Как избежать появления конфиденциальной информации в сообщениях POST в журналах и отладочных сообщениях? - PullRequest
3 голосов
/ 10 октября 2011

На одном из моих веб-сайтов есть форма для отправки клиентом информации о своей кредитной карте.

При нормальной работе конфиденциальная информация (номер кредитной карты, срок действия и т. Д.) Надежно защищена благодаря SSL-соединению и тому факту, что данные не могут быть сохранены на сервере после попытки зарядки.

Проблема начинается всякий раз, когда исключение вызывается внутренним кодом, обрабатывающим запрос, поскольку сведения об исключении (которые в Django включают POST QueryDict) содержат конфиденциальную информацию в виде простого текста. Они, в свою очередь, попадают в журналы ошибок и в электронные письма, которые отправляются администраторам.

Есть какой-нибудь элегантный способ избежать этого?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2012

Вы должны прочитать документы по адресу: https://docs.djangoproject.com/en/dev/howto/error-reporting/#filtering-sensitive-information

Существует поддержка фильтрации конфиденциальной информации, поскольку Django 1.2.6, соответственно 1.3.1, и конфиденциальные данные в 'django.contrib.auth.views' по умолчанию отфильтровываются с Django 1.4.

0 голосов
/ 10 октября 2011

Я не знаю ни одного из них, но было бы довольно просто написать немного промежуточного программного обеспечения, которое заменяет значения на unicode -подобные значения, которые не могут быть repr ' д. Например:

class sensitive_unicode(unicode):
    def __repr__(self):
        return "<sensitive_unicode>"

class SensitiveDataHidingMiddleware(object):
    def process_request(self, request):
        for key, val in request.POST.iteritems():
            if key.startswith("sensitive_"):
                request.POST[key] = sensitive_unicode(val)

(на самом деле, это может быть не так просто, потому что я думаю, что request.POST является неизменным ... Так что вам придется заставить его быть изменяемым или скопировать его или что-то в этом роде, но это общая идея).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...