13:53 AdSense 支持论坛举办专家在线答疑活动 » Inside AdSense-中文


从10月份开始,AdSense 支持论坛每周五都会举办一次专家在线答疑活动。每次活动持续一小时,专注于某一个领域如付款、技术、政策等等,由AdSense 付款专家、技术专家、产品专家、政策专家、优化专家轮流现场为大家解决问题。

在9月底,正值付款时间,我们实行了一次付款专家答疑活动,受到了论坛用户的欢迎,效果也非常好,付款专家现场解答了很多发布商长期以来的疑问和担心。

如果您在使用 AdSense的过程中遇到了问题,不妨来参加我们的在线答疑活动。我们的专家会当场帮你解决问题。

在线答疑活动每周五的下午举行,每期具体的主题我们会提前在论坛里通知,本周五的答疑主题是技术和产品疑难问题,欢迎大家参加,也欢迎大家给我提建议和意见,希望我们能为大家提供满意的服务和帮助:)
13:21 动态网址与静态网址 » 谷歌中文网站管理员博客
Dynamic URLs vs. static URLs
发表于:2008年9月22日,下午3: 20

在跟网络管理员沟通时经常会出现这种情形,一些广为传播的理念可能在过去是正确的,但是可能已不再切合目前的情况了。当我们最近在跟几个朋友谈及关于网址的结构时就碰到这种情况。其中一个朋友很担心动态网址的使用,甚至认为“搜索引擎无法处理动态网址”。另外一个朋友觉得动态网址对搜索引擎来说完全不是问题,那些都是过去的事了。还有一个甚至说他从来都搞不懂动态网址和静态网址相比有什么区别。对于我们来说,这一刻使我们决定要好好研究一下动态网址和静态网址这个话题。首先,让我们来界定一下我们要谈论的主题:

什么是静态网址?
一个静态网址,顾名思义,就是一个不会发生变化的网址,它通常不包含任何网址参数。例如:http://www.example.com/archive/january.htm。您可以在搜索框里输入 filetype:html 在谷歌上搜索静态网址。更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。这也是为什么网站管理员们在处理大型的、经常更新的网站,像在线购物网站、论坛社区、博客或者是内容管理系统时,会使用动态网址的原因。

什么是动态网址?
如果一个网站的内容存储于一个数据库,并且根据要求来显示页面,这时就可以使用动态网址。在这种情况下,网站提供的内容基本上是基于模板形式的。通常情况下,一个动态网址看起来像这样:http://code.google.com/p/google-checkout-php-sample-code/issues/detail?id=31。您可以通过寻找像? = & 这样的符号识别出动态网址。动态网址有一个缺陷是不同的网址可以拥有相同的内容。这样导致不同的用户可能链向含有不同参数的网址,但是这些网址却都含有相同的内容。这也是为什么网络管理员有时候想要将这些动态网址重写成静态网址的原因之一。

我是不是应该让我的动态网址看起来是静态的呢?
在处理动态网址时,希望您能了解以下几点事实:

  1. 要正确地生成和维护从动态网址到静态化网址的重写转变实际上是一件很难的事情。
  2. 将原始的动态网址提供给我们会比较安全,请让我们来处理诸如探测和避开那些有问题的参数的事情。
  3. 如果您想重写网址,请去掉那些不必要的参数,同时请保持它动态网址的样子。
  4. 如果您想提供一个静态网址代替动态网址,那么您应该切实地生成相应的静态内容。

静态和动态网址,Googlebot对于哪一个识别得更好呢?
我们碰到过很多网站管理员,像我们的朋友那样,认为静态或者看起来是静态的网址对于网站的索引和排名是有优势的。这种看法是基于这样一个假设,即认为搜索引擎在抓取和分析含有会话标识(session ID)和来源追踪器(source tracker)的网址时是有问题的。然而,事实是,谷歌在这两个方面都有了相当的进展。就点击率来说,静态网址可能略微有些优势,因为用户可以很容易地读懂这个网址。但是,就索引和排名来说,使用数据库驱动网站并不意味着明显的劣势。相比较将参数隐藏以使他们看起来是静态的网址来说,我们更希望网站将动态的网址直接提供给搜索引擎。

现在,让我们来看一些有关动态网址的广为传播的看法,并且来纠正一些蒙蔽网站管理员的假说。:)

传说:“动态网址不能被抓取。”
事实:我们可以抓取动态网址并且解释不同的参数。如果您为了让网址看起来像是静态的,而隐藏那些可以给谷歌提供有价值信息的参数,这样做反而会给该网址的抓取和排名带来麻烦。我们的建议是:请不要将一个动态网址改换格式以使其看起来是静态的。尽可能地使用静态网址来显示静态内容是可取的,但在您决定展示动态内容的情况下,请不要将参数隐藏起来从而使他们看起来像是静态的,因为这样做会删除掉那些有助于我们分析网址的有用信息。

传说:“动态网址的参数要少于3个。”
事实:对于参数的数量是没有限制的。但是,一个好的经验是不要让您的网址太长(这个适用于所有的网址,不论是静态的还是动态的)。您可以去掉一些对于Googlebot来说不重要的参数,给用户一个好看一点的动态网址。如果您不能确定可以去掉哪些参数,我们建议您将动态网址中所有的参数都提供给我们,我们的系统会弄明白哪一些是不重要的。将参数隐藏起来会影响我们正确地分析您的网址,我们也就不能识别这些参数,一些重要信息可能也因此丢失了。

下面一些是我们认为您可能会存在疑问的一些问题。

这是否意味着我应该完全避免重写动态网址?
这是我们的建议,除非您能确保您只是去掉多余的参数,或能够把所有有可能有不良影响的参数完整地删除。如果您把自己的动态网址任意修改使其看起来像是静态的,您要清楚这样做是有风险的,有可能会导致有些信息不能被正常地编译和识别。如果您想给您的网站再增加一个静态的版本,请您一定要提供一个真正意义上的静态的内容,比如生成那些可以通过网站相应路径而获取的文件。如果您仅仅是修改了动态网址的表现形式,而没有真正提供静态的内容,那么您有可能适得其反。请直接把标准的动态URL提供给我们,我们会自动找出那些冗余的参数。

你能给我举一个例子么?
如果您有一个像下面这样标准格式的动态网址:foo?key1=value&key2=value2,我们建议您不用改动它,谷歌会决定哪些参数可以去掉;或者您可以为用户去掉那些不必要的参数。不过要慎重,仅仅去掉那些不重要的参数。这里有一个含有多个参数的动态网址的例子:

www.example.com/article/bin/answer.foo?language=en&answer=3&sid=98971298178906&query=URL
并不是所有的参数都提供额外的信息。所以将这个网址重写为www.example.com/article/bin/answer.foo?language=en&answer=3 可能不会引起任何问题,因为所有不相关的参数都去掉了。

下面是一些经过认为修改而看起来像是静态网址的例子。相比较没有重写、直接提供动态网址来说,这些网址可能会引起更多抓取方面的问题。
如果您将动态网址重写成如上所述的示例的话,可能会导致我们很多不必要的抓取,因为这些网址中都含有会话标识(sid)和查询(query)参数的可变值,这无形中生成了很多看起来不同的URL,而他们包含的内容却是相同的。这些格式让我们很难理解通过这个网址返回的实际内容和参数URL以及98971298178906是无关的。不过,下面这个重写的例子却将所有无关的参数都去掉了:
尽管我们可以正确地处理这个网址,我们还是不鼓励您使用这样的重写。因为它很难维护,而且一旦一个新的参数被加到原始的动态网址,那么这个网址就需要马上更新。不这样做的话就会再次导致生成一个隐藏了参数的貌似静态网址的URL。所以最好的解决方法是通常将动态网址保持他们原来的样子。或者,如果您去掉不相关的参数,请记住一定要保持这个网址是动态的:
我们希望这篇文章能够对您和我们的朋友有帮助,使围绕动态网址的各种推测清晰化。如果您有更多的问题的话,欢迎加入我们的网站管理员支持论坛进行讨论。
制作安全网站的checklist动点博客 » 车东 在 Google 阅读器中共享的项目

作者:charlee

fcicq最近在IPA上看到一篇安全相关的文章, 它的最末尾有个checklist,于是催我把它翻译了。前几天比较忙,周末没什么事儿了,就翻译一下吧。

原文的标题是如何让网站更安全。 这里仅翻译文章最后的一个checklist。

2008/4/20更新:fcicq倒是神速啊,马上就把具体的应用策略扔出来了 参考:PHP 实践 Security Checklist

标有 (*) 的检查项目表示该项是针对相关问题的根本解决方法,应当尽最大努力去完成这些内容。 未标 (*) 的项目,表示该项并不能完全消除安全隐患,只是说通过这种方法可以避免发生安全问题。 最后一条似乎没什么意思,不翻译了。

  1. SQL注射
    1. (*) 在组合SQL语句时要使用SQL变量绑定功能
    2. (*) 如果数据库不提供变量绑定,那么需要对构成SQL的所有变量进行转义
    3. 不要将错误信息原封不动地显示在浏览器中。
    4. 为访问数据库的用户设置适当的权限。
  2. 操作系统命令行注射
    1. (*) 避免使用能启动shell命令的语言
    2. 使用的语言如果允许启动shell命令,则需要对该功能的参数种的所有变量进行检查,确保只包含合法的操作
  3. 不检查路径名参数/目录遍历
    1. (*) 不要将外部传进来的参数直接作为文件名来使用
    2. (*) 将打开文件的操作限制在固定的目录中,并禁止文件名中包含路径
    3. 为Web服务器上的文件设置正确的访问权限
    4. 检查文件名
  4. 会话管理的问题
    1. (*) 用难以推测的内容作为会话ID
    2. (*) 不要在URL中保存会话ID
    3. (*) 为https协议中使用的cookie设置secure属性
    4. (*) 登录成功后生成新的会话
    5. (*) 登录成功后,在会话ID之外再生成一个秘密信息,每次访问页面时都检查之
    6. 不使用固定值作为会话ID
    7. 将会话ID保存到Cookie中时,要设置有效期限
  5. 跨站脚本攻击(XSS)
    • 不允许输入HTML内容时的解决方法
      1. (*) 输出到页面上的所有内容都要转义
      2. (*) 输出URL时仅允许以“http://”或“https://”开头的URL
      3. (*) 不要动态生成<script>...</script>的内容
      4. (*) 不要从外部网站读入样式表
      5. 检查输入内容
    • 允许输入HTML内容时的解决方法
      1. (*) 解析输入的HTML内容,生成解析树,然后提取其中的非脚本部分
      2. 使用脚本删除输入的HTML内容中的相关字符串
    • 通用解决方法
      1. (*) 应答的HTTP头重指定Content-Type的charset属性
      2. 为避免Cookie情报泄漏,应禁止Trace方法,并对所有Cookie设置HttpOnly属性
  6. 跨站请求伪造(CSRF)
    1. (*) 所有页面都通过POST来访问,在前一页面的hidden中随机生成一个信息,提交后的页面检查该信息,正确时才予以执行
    2. (*) 执行业务之前再次要求输入密码
    3. (*) 确认Referer是否正确,只有正确时才执行
    4. 执行重要操作时,向预先设置的邮件地址中发送邮件
  7. HTTP头注射
    1. (*) 不直接输出HTTP头,而使用运行环境提供的头信息输出API
    2. (*) 无法使用API时,要禁止输入的头信息中的换行
    3. 删除所有外部输入中的换行
  8. 邮件盗用(通过某种手段使邮件发送到攻击者指定的地址)
    1. (*) 不使用外部参数作为邮件头信息
    2. 必须用外部参数设置头信息时,要删除其中的危险字符。

发表评论 | 分类:技术文章
本文网址:http://huaidan.org/archives/2412.html

© 鬼仔 for 鬼仔's Blog, 2008. | Add to del.icio.us digg | Technorati Google BlogPulse.

相关日志


有些时候态度确实很重要Pure Pleasure - Reborn » 车东 在 Google 阅读器中共享的项目

我并不相信“态度决定一切”,但有些时候,态度确实非常重要——比如学习外语的时候。多年的观察使我的出一个结论:很多的时候,人们学不好外语的根本原因在于他们的态度,包括对母语的态度,对外语的态度。

显而易见,母语和外语是不一样的。但是从另外一个角度来看,它们没什么不同——都是语言,都是作为人类注定可以习得并使用的工具。准确地讲,很多人学不好外语,就是因为只看到了“母语与外语之间的不同”,而忽视了“母语与外语之间的共同之处”,进而产生了错误的态度,而错误的态度导致错误的做法,错误的做法常常导致错误的结果(有时胡搞瞎搞也可能成功),进而错误的结果更可能会进一步强化错误的态度。

很多人以为自己是“自然而然”地习得了母语,其实根本不是。从不识字到识字,到识足够多的字与词并能够对其熟练使用大约要耗费十年时间(小学、初中、高中),而其中还有大部分的学习过程是“被迫”完成的。英文中的“Compulsory Education”就是我们说的“义务教育”,其中的“Compulsory”说得直接一点就是“强制性的”——不强制不行啊,因为人天生是愚昧的,必须教化;否则他们就很可能会像托马斯索威尔说的那样运用天赋摧毁整个文明。就算是动用国家机器进行强制教育,最终还是有更多的人只能使用母语进行日常必需之沟通而已;他们读文章不一定读得懂,讲话不一定讲清楚,写文章不一定写明白,就算是听听弄不好也只能听到他们自己想听的以及能够听懂的。(看看京城里那些“上访”的人们就知道了,他们的窘境与他们的表达能力有直接的关系——当然还有很多其他因素,比如,他们受教育程度太差不够并不是自找的。)——可见即便是母语,也不是那么容易习得。与学习任何一种技巧一样,母语习得若想精通到一定的地步,当然不能全凭“自然”;相反,一定要“使劲浑身解数”才行。

大多数人在认为自己是“自然而然”地学会了母语的同时,认为学习外语是“并非自然的”。也许对他们来讲,如果“自然而然”意味着“轻松愉快”的话,“并非自然”就意味着说“困难重重”。正是因为这样的态度,直接导致很多人在学习外语上实际上只付出了一点点努力的时候就已经开始觉得自己已经付出了惊人的代价。这,仅态度上就不对。

小时候学习汉字,那么难写,那么难学,都学会了,怎么做到的?一个汉字要密密麻麻写上好几页,美其名曰“练字”。学一个新字,老师要让学生“造词”;学一个新词,老师要让学生“造句”。即便识字到一定的程度(学完常用三千汉字),也还有相当长一段时间里要天天背着现代汉语大词典上学(其实,最初识字的时候书包里装的是“新华字典”),遇到不认识的字与词马上就查一查。当然了,大抵上没有谁一辈子都走到哪里都带着词典字典(只不过今天连手机里都可以安装电子辞典,所以倒也有可能)——因为无论是谁,学了那么久总会到达这么一个阶段:就算遇到一些生字生词,不查也罢。在语文课上读文章,从来都是精读;不仅要自己精读,还要有老师讲解,并且其中精彩的段落还可能需要死记硬背(当然,“死记硬背”的另外一个说法是“博闻强识”)……除此之外,课外还要看大量的小说,有些人还要写日记或者其它的什么文字。

可是看看人们怎么学外语就明白为什么有那么多人学不好了。他们希望看一遍就可以记住一个单词,从来只看不写甚至不读;学一个新词从来不去造句;读文章遇到生词能不查就不查,哪怕多查两个就开始气馁,然后“合理”地质疑到:“这么做是不是很浪费时间”?从来没有背过大段的英文——他们说“背单词”都背不过来;没有老师讲解就坚决不看文章;对于从来不肯“精读”的他们,所谓的“泛读”并非为了扩大阅读量,而只不过是因为懒得查词典或者干脆是因为“太多地方看不懂”;课外的阅读就更不用提了,说辞只有一个,“太难了”。至于“写”?大多数人从来没写过100词以上的篇幅。

大多数人没学好外语只不过是因为“苦”功不够。如果说学外语应至少该像学习母语一样付出十分努力的话,很多人实际上却把三分或者四分当作了学习外语的努力之上限。某种意义上,这是因为他们已经遗忘了当初学习母语所付出的辛苦而造成的。所以,他们“觉得自己已经十分努力”,但实际上却“只付出了应该付出的三四成努力”而已——当然效果不佳。他们往往无法意识到“自己所付出的努力其实不够”,但可以清楚地看到结果——效果不佳;于是必然斥诸于一些“貌似有效”但实际上不仅无益甚至有害的“技巧”。比如:

其实,浪费时间的最可怕方法并非“无所事事”,而是专心去做错误的事情。没有人愿意去做错误的事情,但是往往好像注定了一样去做错事。为什么呢?据说人生处处是选择。而在选择过程中,我们究竟应该选择“正确的”的,还是选择“容易的”?答案好像显而易见——当然应该选择“正确的”。然而事实上,很多人会不由自主地选择“容易的”。自己查字典精读文章是正确的,但是不容易;不用自己动手查词典而直接背人家整理好的词汇表是容易的,但却不一定是正确的。因为,这么做直接导致的结果是“失去了锻炼阅读理解能力的机会”。

然而,最要命的还在后面:背词汇列表其实只不过是“看起来容易而已”,事实上却是最困难的——因为我们人类的大脑就是难以记忆那种项目之间并无明显联系的列表的。那么辛苦背下来的怎么就那么容易忘?好不容易遇到一个没有生词的句子却看起来还是一头雾水(因为实际上背错了释义,比如preoccupation通常被词汇书里解释成“神入,全神贯注”;但实际上,在考试中出现的意思却是词典中的另外一个:“偏见”。)——不知读者你没有过这种尴尬?相反,“通过阅读、查词典习得新词汇”尽管乍看起来很是麻烦,但实际上最终是最容易的——因为习得的每一个单词都必然不可能遗忘,并且能够真正使用。其它的歪门邪道比如“谐音单词记忆法”就更扯淡了,有没有想过哪些东西其实根本就是“哑巴英语”的病原体之一呢?——最终只能导致说出来的东西根本就没有人听懂。

急于求成、好高骛远,这些都是古人早已总结过的学习主要障碍,然而,大多数人总觉得这些事情不会发生在自己的身上——他们缺乏自我内省机制。我经常讲给学生听的话里面最重要的可能是这一句:“一切都靠积累”。不要以为自己已经足够努力了,努力从来都没有上限。能做多少就做多少,能坚持多久就坚持多久,不就是学个外语么?


^==Back Home: www.chedong.com

^==Back Digest Home: www.chedong.com/digest/

<== 2008-10-15
  十月 2008  
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
==> 2008-10-17