6

我正在开发一个项目在谷歌应用程序引擎(webapp框架)。我需要你们来评估我是如何处理例外的。设计处理异常 - 谷歌应用程序引擎

有4种类型的异常,我处理的:

  1. 编程异常
  2. 恶意的用户输入
  3. 不正确的URL
  4. 不正确的查询字符串

这里是我如何处理他们:

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

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

  3. 我有一个处理不正确的URL的全部网址。也就是说,我把用户带到了一个自定义的“页面不存在”页面。我想我在这里没有任何问题。

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

您的意见是什么?在此先感谢..

+1

在客户端进行恶意输入验证没有意义 - 任何恶意用户都会禁用或逃避它。 – 2009-05-07 10:47:39

+0

好的,我在服务器端做什么? – shanyu 2009-05-07 14:23:22

回答

5

你似乎已经想好了。我唯一要补充的是,你可能想看看Bloog作为一个例子。 Bloog是用Python编写的App Engine的一款非常流行的开源博客引擎。

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

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

+0

谢谢,我会的。关于第2点和第4点的任何建议? – shanyu 2009-05-06 17:10:36

0

广告。 #4:我通常把查询字符串视为非必要的。如果查询字符串有任何错误,我只会提供纯粹的资源页面(就像没有查询出现一样),可能会向用户提供一些信息,查询字符串有什么问题。

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

相关问题