【问题标题】:design for handling exceptions - google app engine处理异常的设计 - 谷歌应用引擎
【发布时间】:2010-10-24 06:07:33
【问题描述】:

我正在开发一个关于谷歌应用引擎(webapp 框架)的项目。我需要你们评估我如何处理异常。

我正在处理 4 种类型的异常:

  1. 编程异常
  2. 错误的用户输入
  3. 网址不正确
  4. 查询字符串不正确

我是这样处理它们的:

  1. 我已经继承了 webapp.requesthandler 类并覆盖了 handle_exceptions 方法。每当发生异常时,我会将用户带到一个友好的“我们很抱歉”页面,同时向管理员发送一条带有回溯的消息。

  2. 在客户端,我(将)使用 js 并在服务器端进行验证。 在这里,除了根据编程逻辑(检查:现金输入是否为浮点类型?)和业务规则(检查:用户有足够的积分来执行该操作吗?)验证输入之外,我认为(作为具有非 Web 经验的编码器) ,我还必须检查恶意意图。我应该采取什么措施来应对恶意行为?

  3. 我有一个处理错误 URL 的包罗万象的 URL。也就是说,我把用户带到了一个自定义的“页面不存在”页面。在这里我认为没有问题。

  4. 如果留给它们自己,不正确的查询字符串可能会引发异常。如果 ID 不存在,则该方法返回 None(正在发生异常)。如果参数不方便,代码会引发异常。在这里我想我必须提出一个 404 并将用户带到自定义的“页面不存在”页面。我该怎么办?

你有什么看法?提前谢谢..

【问题讨论】:

  • 在客户端对恶意输入进行验证是没有意义的——任何恶意用户只会禁用或逃避它。
  • 好的,我在服务器端怎么办?

标签: python google-app-engine exception-handling web-applications


【解决方案1】:

你似乎把事情想得很好。我唯一要补充的是,您可能想以Bloog 为例。 Bloog 是一个用 Python 编写的用于 App Engine 的编写良好且流行的开源博客引擎。

此外,在第 2 点,请注意 these typesCross Scripting 攻击。

至于 #4,请记住,404 页面是在您的设计中添加一些 color and creativity 的机会。

【讨论】:

  • 我更新了我的回复,在 #2 和 #4 上添加了一些 cmets。听起来您已经考虑得很周到了。
  • 再次感谢。我会浏览您提供的链接。
【解决方案2】:

广告。 #4:我通常将查询字符串视为非必要的。如果查询字符串有任何问题,我将只显示裸资源页面(好像没有查询存在),可能会向用户提供一些信息,说明查询字符串有什么问题。

这会导致类似于您的#3 的问题:用户是如何进入这个错误的查询的?我的应用程序是否在某处产生了错误的 URL?或者它是某些外部服务中的过时链接,还是保存的书签? HTTP_REFERER 可能包含一些线索,但当然不是权威的,所以我会记录有问题的查询(带有一些额外的 HTTP 标头)并尝试调查此案。

【讨论】:

  • 感谢您的回答。我想导致第 3 点的原因之一是用户通过修改查询字符串尝试了一些“不必要的”。
猜你喜欢
  • 1970-01-01
  • 2019-01-08
  • 2016-07-14
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
  • 2023-03-07
  • 2011-05-06
相关资源
最近更新 更多