不要轻信 PHP_SELFGracecode.com » 车东's shared items in Google Reader

开门见山,考虑下面的代码(原文连接有详细的解释)

<html>
    <body>
        <?php
            if (isset($_REQUEST['submitted']) && $_REQUEST['submitted'] == '1') {
                echo "Form submitted!";
            }
        ?>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <input type="hidden" name="submitted" value="1" />
            <input type="submit" value="Submit!" />
        </form>
    </body>
</html>

看似准确无误的代码,但是暗藏着危险。让我们将其保存为 foo.php ,然后放到 PHP 环境中使用

foo.php/%22%3E%3Cscript%3Ealert('xss')%3C/script%3E%3Cfoo

访问,会发现弹出个 Javascript 的 alert -- 这很明显又是个 XSS 的注入漏洞。究其原因,发现是在

echo $_SERVER['PHP_SELF'];

这条语句上直接输出了未过滤的值。追根数源,我们看下 PHP 手册的描述

'PHP_SELF'

The filename of the currently executing script, relative to the document root. 
For instance, $_SERVER['PHP_SELF'] in a script at the address 
http://example.com/test.php/foo.bar would be /test.php/foo.bar. The __FILE__ 
constant contains the full path and filename of the current (i.e. included) file.
If PHP is running as a command-line processor this variable contains the script 
name since PHP 4.3.0. Previously it was not available. 

原因很明确了,原来是 $_SERVER['PHP_SELF'] 虽然“看起来”是服务器提供的环境变量,但这的确和 $_POST 与 $_GET 一样,是可以被用户更改的。

其它类似的变量有很多,比如 $_COOKIE 等(如果用户想“把玩”他们的 cookie,那我们也是没有办法)。解决方案很简单,使用 strip_tagshtmlentities 等此类函数过滤或者转义。

echo htmlentities($_SERVER['PHP_SELF']); 

-- Split --

上述的例子让我们需要时刻保持谨慎 coding 的心态。Chris Shiflett 在他的 Blog 总结的相当直白,防止 XSS 的两个基本的安全思想就是

Filter input
Escape output

我将上面翻译成 “过滤输入,转义输出”。详细的内容,可以参考他 Blog 的这篇文章,此处略。


Gracecode.com | Permalink | Trackback | Wap | Rss | 2 comments

13:16 11月UCD书友会,广州、成都、杭州、北京、上海、南京、深圳 » UCDChina.com

11月话题: 音乐功能和音乐网站

广州,广州市天河区科韵路16号广州信息港E栋 网易大厦一楼,请注意地点变更
16号(周日)、下午、两点半。
参与嘉宾:白鸦彭毅Fenng

成都,天府大道北段1480号高新区软件孵化园十一号楼天府软件工作室2301,请注意地点变更
16号(周日)、下午14:30。

杭州,淘咖啡,上城区南山路186号(柳浪闻莺对面) (地图),请注意地点变更
16号(周日)、下午14:30。

北京,西直门附近奇遇花园(地图),
16号(周日)、下午14:30。

上海,龙华路2577号,5号楼,BlogBus办公室(地图),
16号(周日)、下午14:30。

南京,洪武北路55号新街口置地广场8层江苏都市网,请注意地点变更
16号(周日)、下午14:30。

深圳,问道旅行馆南山店(详情),
16号(周日)、下午14:30。

书友会详细信息:http://ucdchina.com/book/about/

特别感谢江苏都市网,赞助南京书友会的场地。

转载请注明出自UCDChina.com,谢谢。

相关文章

11:35 利用网站管理员工具进一步诊断您的网站 » 谷歌中文网站管理员博客


原文:Advanced Website Diagnostics with Google Webmaster Tools
发表于:2008年9月30日星期二,上午11: 07

运营网站是一件很复杂的事情,所以我们提供了网站管理员工具来帮助您发现潜在的问题,并防止它们演变成真正的问题。这些发现的问题中,有一些相对来讲比较小(比如有重复的标题和描述),但也有一些是比较大的问题(比如我们无法访问您的网站)。尽管网站管理员工具无法确切地告诉您需要做哪些具体的改动,但是它可以帮助您发现一些需要您解决的潜在问题。

让我们来看一下我们在网站管理员支持论坛里碰到的几个例子:

您的服务器是否把Googlebot当作普通的网站访问者?

尽管Googlebot尽力表现的像一个普通用户,但有一些服务器可能还是会感到困惑而以比较奇怪的方式进行回应。比如,当用户以Googlebot为user-agent进行访问时, 虽然您的服务器在大多数时间里都可以完美无暇地工作,但是有一些运行IIS的服务器会返回服务器错误(或者其他一些和发生服务器错误相关的操作)。在网站管理员支持论坛里,我们曾经碰到过IIS服务器返回500错误(服务器错误)404错误(文件找不到)出现在“网络抓取”诊断部分的情况,还有提交网站地图(Sitemap)文件时出现302错误。如果您的服务器重定向到错误页面,您应该确保我们可以抓取这个错误页面,并且确保服务器返回正确的错误代码。当您做好这些以后,我们就可以在网站管理员工具里显示这些错误。如果您想了解关于这个问题的更多信息及可能的解决方法,请参阅:
http://todotnet.com/archive/0001/01/01/7472.aspxhttp://www.kowitz.net/archive/2006/12/11/asp.net-2.0-mozilla-browser-detection-hole.aspx

如果您的网站托管在运行Microsoft IIS的服务器上,请记住,自然情况下网址是区分大小写的(我们也是如此处理他们的)。这包括那些出现在robots.txt文件里的网址。如果您的服务器以不区分网址大小写的形式工作,您应该小心处理这一部分。例如,“disallow: /paris”将阻止我们访问/paris,而不是/Paris。

您的网站是否存在一些系统性的已损坏的链接?

现代内容管理系统(CMS)经常会导致一些问题,而这些问题往往能够影响大批的网页。有时候这些问题很直接,当您在浏览这些页面时就可以发现;有时候,靠您自己很难发现这些问题。如果某个类似上述的问题产生了大量损坏的链接,它们一般会显示在您网站管理员工具帐户的“网络抓取”诊断部分(列出那些正常返回404代码的已损坏的网址)。在最近的一个个案中,一个网站的RSS feed出了一个小的编码错误,结果导致超过60,000个坏的网址显示在该网站的网站管理员工具帐户里。您一定能理解,我们更愿意将时间花在抓取内容而不是这些404错误页面上:) 。

您的网站是否将用户导向其他地方?

许多网站都有自己关注的特定地域的用户群。我们发现这类网站有时会将其他地域的访问者重定向到一个不同的页面。然而,请记住Googlebot不一定来自于您期望的目标地域,所以也有可能被重定向到其他页面。这可能意味着Googlebot不能访问您的主页。如果发生这种情况的话,网站管理员工具在验证您的网站时可能会出现问题,导致您的网站无法通过验证。当然,这不是网站无法通过验证的唯一原因,但是如果您的网站经常出现这种情况,最好还是调查一下原因。在这个问题上,请确保用对待那个地域的用户一样的方式对待Googletbot,否则可被视为“内容伪装”。

您的服务器是否在我们抓取时无法访问?

即使最好的网站也会出现这种情况——服务器宕机以及防火墙过度保护。如果在我们试图访问您的网站时出现这种情况的话,我们就无法对您的网站进行抓取,而且您可能不知道我们已经尝试去抓取过您的网站了。幸运的是,我们会跟踪这些问题,当我们无法访问您的网站时,您可以在管理员工具帐户里发现“网络无法访问”及“robots.txt 文件无法访问”错误。

您的网站是否被黑了?

黑客有时候会在出问题的页面上添加些奇怪的、远离主题的隐藏内容和链接。如果是隐藏的话,您可能不会马上注意到它。尽管如此,它还是有可能成为一个大问题。虽然消息中心会就某些类型的隐藏文本向您发出提醒,但是您最好也要多留意一些。网站管理员工具“统计信息”项目下的“Googlebot看到的内容”会显示与您网站内容有关的关键字,如果您在那里看到一些完全不相关的关键字,那么您的网站有很大可能被黑掉了,您最好能尽快调查一下发生了什么事情。您也可以使用谷歌快讯(Google Alerts)或者使用[site:example.com 垃圾关键词]进行查询,在这里“垃圾关键词”是指一些像色情, 伟哥, 曲马多(tramadol,一种镇静剂), 性及其他一些您的网站上一般不会出现的词语。如果您发现您的网站真的被攻击了,我推荐您参阅我们博客上的另外一篇帖子——我的网站被黑掉了,怎么办?

网站管理员工具可以发现很多关于网站的问题;上述问题只是我们最近碰到的问题当中比较普通的一些罢了。因为有一些问题真的很难发现,在它们真正成为问题之前您不妨去看一下您的网站管理员工具帐户,看看能不能发现一些问题的苗头。如果您发现一些您确实无法解决的问题,为什么不在网站管理员支持论坛上发贴来寻求专家们的帮助呢?

今天,您检查您的网站了吗?
09:31 中文网站管理员博客阅读笔记 » Inside AdSense-中文


不知道发布商们是不是经常看谷歌的中文网站管理员博客,那里有很多非常有价值的博文,推荐大家经常去看看,会给您在网站建设和维护方面有非常大的帮助。

今天先给大家分享两条我们从那里读到的两条很有价值的建议,网站的内容和结构是一个好网站的基础,做好这两点对网站的成长和收入都会有很大的帮助:)

1. 内容为王,提供对用户有用的内容


2. 创建可抓取的网站,让搜索引擎了解你的网站

<a href="#" onclick="javascript:void(...)">Product Catalog</a>

我们推荐更简单的链接,如:

<a href="http://www.example.com/product-catalog.html">Product Catalog</a>
03:22 Thoughs on Innodb Incremental Backups » MySQL Performance Blog

For normal Innodb “hot” backups we use LVM or other snapshot based technologies with pretty good success. However having incremental backups remain the problem.

First why do you need incremental backups at all ? Why not just take the full backups daily. The answer is space - if you want to keep several generations to be able to restore to, having huge amount of full copies of large database is not efficient. Especially if it only changes couple of percents per day.

The solution MySQL offers - using binary log works in theory but it is not overly useful in practice because it may take way too long to catch up using binary log. Even if you have very light updates and can execute updates for a full day within an hour it will take over 24 hours to cover month worth of binary logs… and quite typically you would have much higher update traffic.

Another solution is rdiff which is a great general purpose tool. Though you can do much better with Innodb in Particular.

The Innodb pages have great deal of information helpful for their incremental backup in their internal. There is basically page version allowing to quickly check if the page is newer. There is page checksum and finally there is an offset of page (where it should be in the data file) stored in the page.

Using this data it should be easy to implement very efficient and yet simple for Incremental backup for Innodb.

In a way similar to rdiff the tool could both update the backup and store the rollback changes or if dealing with read-only compressed backup create the roll-forward recovery log, which also can be easily compressed.

What tool would need to do is to go through the pages for each Innodb file and simply write all the new pages to the separate file. Because pages already have position information in them there is no need to have complex “diff” meta data.

For recovery we can simply read this new pages file and put the pages back to their original places.

Of course this means .frm files and Innodb logs and MyISAM system tables need to be copied fully but they typically do not have any considerable portion of Innodb database


Entry posted by peter | 6 comments

Add to: delicious | digg | reddit | netscape | Google Bookmarks

01:44 中文网志年会 D-Day - 5 » Yining.write()

今天在GReader上看到Fenng推荐了一篇“2008年中文网志年会叽歪“,瞄了一眼,汗,再瞄一眼,囧,赶紧留了言。回头想想,也许该多说些,正好,这周末年会就开始了,回头看看今年的blog几近荒芜,趁着就Young的这篇文字做一些解释的机会,临时抱佛脚补一点是一点吧。

中文网志年会的英文全称是 Chinese Blogger Conference,简称就是cnbloggercon,域名是cnbloggercon.org

cnbloggercon也是年会专用的标签(Tag),几乎可以在各个支持tagging的网站上用这个tag搜索和聚合,比如又拍deliciousflickrtechnoratitwitter等 ……

第一次网志年会是在2005年,地点是上海,年会blog上写得没错,当时用的是cnblog.org/bloggercon,其实,用网络工具可以回溯很多历史 :-)

至于为什么用“网志”,可以看看维基百科上的“网志”词条

虽然域名注册人是我,但不表明年会是我号召和组织的,更不是所谓的“创办人”或者“一把手”。每年的年会都是由一群在各地的志愿者以松散的结构使用各种网络工具协调和组织起来的(简单且应景地说,是一种分布式的社会网络应用)。我也仅仅是他们中普通的一员(注册域名碰巧是当时我的一项任务)。而且这一届在广州的年会的组织工作,我并未参与。

年会不仅仅局限于blog本身,每年的年会都会在与blog和网络相关的新事物,新应用和新技术上做介绍,讨论甚至争论,比如2005年的标签,创作共用与版权的关系,Feed的烧制和聚合,2006年的OpenID,mashup,博客实名制,2007年的微blogging,互联网时代的NGO等,开放、协作,共享是年会最重要的主题。

所以,参会者是否用中文写blog还是blogger是否华人都不重要;把年会当作blogger们年度面对面交流沟通也好,网友间鹊桥会般的见面(Hi~ Bachus~~)也罢,创业者们炫自己的大作的机会(去年叽歪的大屏幕)也行,Geeks们秀新玩意的展台(嘿,我还记得某次会场上一水的MacBook)也可以,甚至一帮人扎堆凑热闹而找的借口(周Zola曙光喊着“杀人啦”奔向广州)都成……

哦,已经 D-Day - 4了……

P.S. 俺是男的,有证明的 :-D


^==Back Home: www.chedong.com

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

<== 2008-11-10
  十一月 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
==> 2008-11-12