Micolog优化(2):你不能不知的BUG

五月 30th, 2009 发表评论 阅读评论

使用Micolog搭建Blog的人很多,不知有没有谁留意到这个Bug。这个BUG非常的致命,也许引发这个BUG的人并不是有心,但如果是有心的话,可以让你micolog上每一篇文章都显示不出来。

BUG在哪里:只需打开一篇文章,回复一个评论,评论会要求写E-mail,这个E-mail是用来决定显示头像的,但却没有对填写的内容作任何的检查和限制,你只要写含有中文的E-mail,不妨就写一个“中”字在里面,提交评论。再刷新一下,你就发现该页面无法显示,而出现了下面的错误提示,很不友好吧。当然这只会影响有评论的那篇文章,其它文章没有问题。

 

File "/base/python_lib/versions/1/django/template/__init__.py", line 563, in resolve

    obj = resolve_variable(self.var, context)

  File "/base/python_lib/versions/1/django/template/__init__.py", line 656, in resolve_variable

    current = current()

  File "/base/data/home/apps/mlog/1.329808355789312518/model.py", line 464, in gravatar_url

    imgurl +=hashlib.md5(self.email).hexdigest()+"?"+ urllib.urlencode({

UnicodeEncodeError: 'ascii' codec can't encode character u'\u548c' in position 0: ordinal not in range(128)

 

 

问题的原因已经在上面描述了,因为程序中试图对该字符串转编码失败。这错误信息在micolog作者的主页上也能找到,就是xuming.net(或mlog.appspot.com)首页最下面(他的主页很久没更新了)的一篇文章“发布Micolog0.5版本”,你点开看看(不是我恶搞的)。

注:不要找别人的micolog来测试,在自己的站里测试,测试后可以删除该评论就恢复正常了。如果有人经常这样恶搞你的文章,而自己没这么有空来来删除这样的评论,那攻击者可以在每一篇文章都留这一个这样的评论,那就...

解决办法:

打开model.py,找到class Comment下的函数def gravatar_url,里面有这样的两行:

 

            imgurl = "http://www.gravatar.com/avatar/"

            imgurl +=hashlib.md5(self.email).hexdigest()+"?"+ urllib.urlencode({

                'd':default, 's':str(size),'r':'G'})

 

try..except结构把这两行包起来,结果就成了:

 

        try:

            imgurl = "http://www.gravatar.com/avatar/"

            imgurl +=hashlib.md5(self.email).hexdigest()+"?"+ urllib.urlencode({

                'd':default, 's':str(size),'r':'G'})

        except :

            imgurl = default

 

这样就修复了这个BUG,赶紧增强你的Micolog吧。

注:转载请注明出处http://www.kgblog.net

分类: GAE相关 标签: micolog优化  BUG  (2639次阅读)

  1. 2009-05-30 at 20:34
    测试一下! <br /> <br /> <br />我改了以后为何 <br /> <br /> <br />Error: Server Error <br />The server encountered an error and could not complete your request. <br /> <br />If the problem persists, please report your problem and mention this error message and the query that caused it.
  2. 2009-05-30 at 20:52
    @bighua: 可能是缩进对齐的问题,空格跟tab是不同对待的,而肉眼却看不出来。建议使用notepad++等专业文本编辑软件查看一下。
  3. 2009-05-30 at 21:08
    我刚解决了这个bug,增加了邮件地址判断功能,不知道你有没有……
  4. 2009-05-30 at 21:09
    上面那个我就是blackball
  5. 2009-05-30 at 21:12
    不知谁在徐明的主页上很多文章做测试,使很多文章无法查看。不要恶搞他了,徐明很久没更新过博客了,他估计很忙。还有,大家知道这个BUG的不要乱去别人的micolog站做测试呀,会给有些不会编程的站长造成恐慌,先谢谢大家了
  6. 2009-05-30 at 21:33
    我的blog为何 <br />Traceback (most recent call last): <br /> File &quot;/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py&quot;, line 501, in __call__ <br /> handler.get(*groups) <br /> File &quot;/base/data/home/apps/bighua361/1.333850514889277164/blog.py&quot;, line 46, in get <br /> self.doget(page) <br /> File &quot;/base/data/home/apps/bighua361/1.333850514889277164/base.py&quot;, line 68, in _wrapper <br /> method(*args, **kwargs) <br /> File &quot;/base/data/home/apps/bighua361/1.333850514889277164/blog.py&quot;, line 73, in doget <br /> 'ishome':True <br /> File &quot;/base/data/home/apps/bighua361/1.333850514889277164/base.py&quot;, line 209, in render <br /> html=self.get_render(template_file,values) <br /> File &quot;/base/data/home/apps/bighua361/1.333850514889277164/base.py&quot;, line 201, in get_render <br /> html = template.render(sfile, self.template_vals) <br /> File &quot;/base/python_lib/versions/1/google/appengine/ext/webapp/template.py&quot;, line 81, in render <br /> return t.render(Context(template_dict)) <br /> File &quot;/base/python_lib/versions/1/google/appengine/ext/webapp/template.py&quot;, line 121, in wrap_render <br /> return orig_render(context) <br /> File &quot;/base/python_lib/versions/1/django/template/__init__.py&quot;, line 168, in render <br /> return self.nodelist.render(context) <br /> File &quot;/base/python_lib/versions/1/django/template/__init__.py&quot;, line 705, in render <br /> bits.append(self.render_node(node, context)) <br /> File &quot;/base/python_lib/versions/1/django/template/__init__.py&quot;, line 718, in render_node <br /> return(node.render(context)) <br /> File &quot;/base/python_lib/versions/1/django/template/loade
  7. 2009-05-31 at 22:47
    很有用。 <br />多谢。
  8. 剑皮
    2009-06-02 at 18:24
    这个我很早就试过了,是我刚建gae blog时自己留言测试时发现了,我还以为是我写的内容问题呢?多谢分享…
  9. 2009-06-10 at 15:22
    呵呵 一般情况下 很少有人敲中文在email栏 有的话我也直接卡掉 懒得改··
  10. 行者
    2009-06-17 at 23:39
    请看一个这个 http://hikehk.appspot.com/  
    在单击 单页时就会出错,经过观察,是因为填写了  标签,如果没有标签,好像就能正常显示。

    请教一下 这是什么问题!
  11. 2009-06-18 at 10:00
    错误提示都有了,缺少索引信息,NeedIndexError: no matching index found.
    This query needs this index:
    - kind: Entry
      properties:
      - name: tags
      - name: post_id
        direction: desc
    你先在本地做同样的测试,SDK就能自动生成这些索引再上传。当然你也可以手动在index.yaml中添加这个索引。
  12. 2009-06-18 at 10:10
    之前 传上去 
    用ie7打开 TTP 500 内部服务器错误
    网站无法显示该页面

    用chrome打开:
    A server error occurred.  Please contact the administrator.

    所以我就 将 index.yaml删除了 ,在本地运行,重新生成了index.yaml.
    在本地测试都正常,但上传上去就出现这个问题了,谢谢了,我先按您的方法添加一下看看!
  13. 2009-06-18 at 10:57
    终于搞好了,生成首页的index.yaml,就上传会出现这些错误,要在本地多用用,多点点,
    如果你只在本地的默认皮肤一下,写带有tag的文章,这样上传上去,在xuming皮肤下也会出错!!
    所以要在两种皮肤下都要打开单页看看,这个生成的index.yaml文件会大一些,全一些。
  14. 2009-06-22 at 18:54
    测试 头像  我用了你的代码 但评论头像不见了,把 try except 去掉就好了  
    不知为什么呢  ?
  15. 2009-06-22 at 18:58
    如果我填写了中文的邮箱,那个默认头像就会出来 
    用了try 好像就把那段代码给就不返回了
  16. 2009-06-23 at 09:07
    try:             # construct the url             imgurl = &quot;http://www.gravatar.com/avatar/&quot;             imgurl +=hashlib.md5(self.email).hexdigest()+&quot;?&quot;+ urllib.urlencode({                                 'd':default, 's':str(size),'r':'G'})             return imgurl         except:             return default 

    这样就好了
  17. 好的
    2009-06-24 at 12:56
    试一试
  18. sp
    2009-07-12 at 18:55
    太厉害了,人品又好。
    徐明的博客确实很厉害!
  19. 2009-07-25 at 00:36
    谢谢你的分享了!真的写得很好!
    回头把代码给加上。
    谢谢,希望可以转载这篇文章!
    我的博客:yjtblog.appspot.com
  20. 2009-08-31 at 18:58
    我来试一下
  21. DON
    2009-09-14 at 19:55
    很少有中文邮件的;不过也确实是一BUG;可以用来恶搞;我的博blog.cybercn.net
  22. 2009-10-10 at 02:04
    用徐明的程序,听Keengle讲课
  23. 2009-10-31 at 11:39
    学习了!
  24. 2009-11-14 at 16:48
    我试试
  25. 2009-11-20 at 18:09
    我的网址在提交评论之后会转到一个乱码的页面,其中包含提交评论的内容还有很多斜线
  26. 2009-12-06 at 19:31
    错误提示都有了,缺少索引信息,NeedIndexError: no matching index found.
    This query needs this index:
    - kind: Entry
      properties:
      - name: tags
      - name: post_id
        direction: desc
    你先在本地做同样的测试,SDK就能自动生成这些索引再上传。当然你也可以手动在index.yaml中添加这个索引。
  27. 2009-12-06 at 19:53
    来测试一下头像。
  28. lyh
    2009-12-08 at 17:41
    我也测试一下,呵呵

    欢迎访问我的:http://lyhopq.appspot.com/
  29. ziegfeld
    2010-03-16 at 09:09
    来留个名。我py编程比较迟钝,这个错误不想改了,先用了0.7beta3再说,希望有一天徐明会改掉