初步认识
“伪静态”顾名思义就是一种表面上看似是静态网页(以.html
、.htm
等结尾),不存在任何的数据交互,却其实是动态网页,存在数据交互的网站,具有这种特性的网页被称为“伪静态网页”。我们看到的伪静态网页其实是经过处理的,将动态网页的id等参数通过URL重写来隐藏,让查看者以为是静态网页。
在平时的测试过程中我们经常会看到这样一类奇特的地址:http://xxx.xxx.xx.xx:xxx/test.php/id/1.html
(原型一般为:http://xxx.xxx.xx.xx:xxx/test.php?id=1
)。像这种类型的网址URL,往往是一种伪静态网页,遇到这种情况可以直接对".html
"之前的参数加“'
”进行判断是否存在注入!
实际案例
大家都熟悉动态网站的SQL注入了,网上有很多资源。下面看看一次伪静态网页的注入点查找——手工注入判断(和动态注入判断方法一样):
1、正常页面显示,如图:
2、在网址加上" ' "
,网页不正常显示,如下图:
3、在网址加上" and 1=1
“,网页正常显示,如图:
4、在网址加上” and 1=2
",网页不正常显示,如图:
由此可知该网页为伪静态网页,存在SQL注入。
辨别方法
如果看到一个以.html
或者.htm
结尾的网页,此时可以通过呢在在地址输入框中输入:javascript:alert(document.lastModified)
,来得到网页最后的修改时间,如果得到的时间和现在时间一致,此页面就是伪静态,反之是真静态;因为动态页面的最后修改时间总是当前时间,而静态页面的最后修改时间则是它生成的时间。
实际意义
什么时候网站需要采用伪静态功能呢?
- 考虑SEO(搜索引擎优化:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益),将动态网页通过服务器处理成静态页面,如
www.xxx.com/jk/fd.php?=12
这样的动态网页处理成www.xxx.com/jk-fd-12.html
这样格式静态页面,常见的论坛帖子页面,都是经过伪静态处理成静态页面格式html页面。 - 考虑网站所用的程序语言不易被发现,经过重写来伪静态来将动态网页的程序后缀变为html的静态页面格式。
伪静态的利与弊
当然犹如一篇文章的作者所说的:"如果流量稍大一些使用伪静态就出现CPU使用超负荷,我的同时在线300多人就挂了,而不使用伪静态的时候同时在线超500人都不挂,我的IIS数是1000。”
确实是这样的,由于伪静态是用正则判断而不是真实地址,分辨到底显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,确实是伪静态最大的弊病。
我们应该选择伪静态还是真静态?
1、使用真静态和假静态对SEO来说没有什么区别;
2、使用真静态可能将导致硬盘损坏并将影响论坛性能;
3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷;
4、最重要的一点,我们要静态是为了SEO。
所以:
1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。
2、既然真伪静态的效果一样,我们就可以选择伪静态了。
3、但是伪静态大量使用会造成CPU超负荷。
4、所以我们只要不大量使用就可以了。
5、既然静态只是给SEO看的,我们只需要伪静态给SEO就行了,不需要给用户使用。
6、所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了。