дизайн для обработки исключений - Google App Engine - PullRequest
6 голосов
/ 06 мая 2009

Я занимаюсь разработкой проекта на google app engine (каркас веб-приложения). Вы, люди, должны оценить, как я справляюсь с исключениями.

Есть 4 типа исключений, которые я обрабатываю:

  1. Программирование исключений
  2. Неверный пользовательский ввод
  3. Неверные URL-адреса
  4. Неверные строки запроса

Вот как я с ними справляюсь:

  1. Я разделил класс webapp.requesthandler и переопределил метод handle_exceptions. Всякий раз, когда возникает исключение, я беру пользователя на дружественную страницу «извините» и тем временем отправляю сообщение с трассировкой администраторам.

  2. На стороне клиента я (буду) использовать js, а также проверять на стороне сервера. Здесь я придумываю (как программист с опытом работы вне сети) в дополнение к проверке входных данных в соответствии с логикой программирования (проверка: ввод денежных средств относится к типу с плавающей запятой?) И бизнес-правилами (проверка: у пользователя достаточно очков для выполнения этого действия?) Я также должен проверить против злых намерений. Какие меры следует предпринять против злонамеренных действий?

  3. У меня есть универсальный URL, который обрабатывает неправильные URL. То есть я беру пользователя на пользовательскую страницу "страница не существует". Тут у меня проблем нет, думаю.

  4. Неправильные строки запроса, вероятно, вызывают исключения, если оставить их себе. Если идентификатор не существует, метод возвращает None (исключение находится в пути). если параметр неудобен, код вызывает исключение. Здесь я думаю, что должен поднять 404 и перевести пользователя на пользовательскую страницу "страница не существует". Что мне делать?

Каково ваше мнение? Заранее спасибо ..

Ответы [ 2 ]

5 голосов
/ 06 мая 2009

Кажется, вы хорошо все продумали. Единственное, что я хотел бы добавить, это то, что вы можете взглянуть на Bloog в качестве примера. Bloog - довольно хорошо написанный и популярный блог-движок с открытым исходным кодом для App Engine, написанный на Python.

Кроме того, в пункте № 2 обратите внимание на этих типов из кросс-сценариев атак.

Что касается # 4, имейте в виду, что 404 страницы - это возможность добавить немного цвета и креативности к вашему дизайну.

0 голосов
/ 07 мая 2009

Ad. # 4: Я обычно рассматриваю строки запроса как несущественные. Если что-то не так со строкой запроса, я бы просто представил голую страницу ресурса (как будто не было запроса), возможно, с некоторой информацией для пользователя, что было не так со строкой запроса.

Это приводит к проблеме, аналогичной вашей # 3: как пользователь попал в этот неправильный запрос? Произошло ли в моем приложении неправильный URL-адрес? Или это была устаревшая ссылка в каком-то внешнем сервисе или сохраненная закладка? HTTP_REFERER может содержать некоторую подсказку, но, конечно, не является авторитетным, поэтому я регистрирую проблемный запрос (с некоторыми дополнительными заголовками HTTP) и пытаюсь исследовать случай.

...