<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/Cgeek" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/Cgeek" type="application/rss+xml"></fs:self_link><lastBuildDate>Sat, 22 Oct 2011 05:01:24 GMT</lastBuildDate><title>Cgeek's blog</title><description>web 2.0 &amp; PHP  &amp; DBA &amp; Security &amp; Linux</description><link>http://www.piao2010.com</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Sat, 22 Oct 2011 05:11:04 GMT</pubDate><item><title>nginx module学习之ngx_http_not_modified_filter_module</title><link>http://www.piao2010.com/nginx-module%e5%ad%a6%e4%b9%a0%e4%b9%8bngx_http_not_modified_filter_module</link><wfw:commentRss>http://www.piao2010.com/nginx-module%e5%ad%a6%e4%b9%a0%e4%b9%8bngx_http_not_modified_filter_module/feed</wfw:commentRss><description>整整半年没更新博客了，一方面是工作越来越忙：做不完的日常+学习主交易相关业务+各种报警故障处理。另外最近对nginx module比较感兴趣，可是偏偏C的编程功底差，所以学起来比较吃力，下班时间基本全搭进去了。
牛人都说nginx性能好，代码美，所以忍不住也想学习一下。网上推荐的资料主要是Emiller&amp;#8217;s Guide To Nginx Module Development
英文不好的同学可以看看中文版的，不会那么吃力。另外网上还有各种版本的echo 模块范例，很适合新手入门。大致了解nginx module工作原理之后就可以开始学习nginx现有的module ，
首先从最简单的ngx_http_not_modified_filter开始吧。源文件在src/http/modules/ngx_http_not_modified_filter_module.c
之所以说它简单，是因为这个module 没有配置结构体，也没有指令。

?View Code C&amp;#160;
/*
 * Copyright (C) Igor Sysoev
 */
&amp;#160;
&amp;#160;
#include &amp;#60;ngx_config.h&amp;#62;
#include &amp;#60;ngx_core.h&amp;#62;
#include &amp;#60;ngx_http.h&amp;#62;
&amp;#160;
&amp;#160;
static ngx_int_t ngx_http_test_precondition&amp;#40;ngx_http_request_t *r&amp;#41;;
static ngx_int_t ngx_http_test_not_modified&amp;#40;ngx_http_request_t *r&amp;#41;;
static ngx_int_t ngx_http_not_modified_filter_init&amp;#40;ngx_conf_t *cf&amp;#41;;
&amp;#160;
/*
模块上下文 context
只有一个 ngx_http_not_modified_filter_init
*/
&amp;#160;
static ngx_http_module_t  ngx_http_not_modified_filter_module_ctx = &amp;#123;
    NULL,              [...]&lt;img src=&quot;http://www1.feedsky.com/t1/568974134/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/nginx-module%e5%ad%a6%e4%b9%a0%e4%b9%8bngx_http_not_modified_filter_module&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>高性能</category><category>module</category><category>Nginx</category><pubDate>Sat, 22 Oct 2011 13:01:24 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/nginx-module%e5%ad%a6%e4%b9%a0%e4%b9%8bngx_http_not_modified_filter_module#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=954</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/nginx-module%e5%ad%a6%e4%b9%a0%e4%b9%8bngx_http_not_modified_filter_module</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974134/5428389</fs:itemid></item><item><title>vim 常用命令</title><link>http://www.piao2010.com/vim-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4</link><wfw:commentRss>http://www.piao2010.com/vim-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4/feed</wfw:commentRss><description>每天都用到vim编辑器但有些命令总是记不住，或者是明明有更好的方法实现却因为不熟悉命令而走了弯路，所以贴出来备忘一下。
i 在光标前插入文本
I 在此行开始插入文本     
a 在光标后插入文本
A 在此行未插入文本
o 在当前行下面加一空行并进入输入方式
O在当前行上面加一空行并进入输入方式
删除、复制、移动命令
x 删除当前字符
d$ 删除当前行中从光标往后的所有字符
d0 删除当前行中从光标往前的所有字符
dd 删除当前行
ndd 删除光标所在位置之下的n行
：n1 ,n2d 删除n1行到n2行 (在最后一行状态)
yy 将当前行复制到缓冲区
nyy 将光标所在位置之下的n行文本复制到缓冲区

p：将上一次删除或复制的文本复制到光标的下方
P：将上一次删除或复制的文本复制到光标的上方
说明：移动正文时需先用删除命令将要移动的正文删除，然后使用复制命令
光标移动命令
键盘的←↑→↓键 分别是左移,上移,右移,下移
O(数字), $ 移至当前行首和行尾
+h移动光标至当前窗口的起点
+l移动光标至当前窗口的末尾
+g （或G）移动光标至文件的末尾
+f前翻一页
+b后翻一页
nG 移动光标至第n行
+g 显示当前行号
J 将当前行与下一行连接
u 取消前一个命令
查找字符
/要查找的字符串(回车)：查找光标位置之后的字符串
?要查找的字符串(回车)：查找光标位置之前的字符串
n 继续向同一方向查找匹配的字符串
N 继续进行反方向查找匹配的字符串
* 在查找的字符串中可匹配任意字符
? 在查找的字符串中可匹配一个字符
修改字符
r 只替换光标位置上的一个字符
R 用重写的方法替换原来的字符串，结束替换按键
:[n1,n2]s/旧字符串/新字符串/g 用新文本替换n1～n2行内的所有旧字符串, n1,n2缺省时只修改当前行
:g/旧文本/s//新文本/g 用新文本替换缓冲区内找到的所有旧文本
. 重复上一次修改
u 取消上一次修改
U 将当前行恢复到修改前的状态
常用功能选项的设置
功能选项将改变vi的显示环境，用户可在文件$HOME/.exrc中设置自己的选项，如没有此文件，则使用缺省设置。set命令在vi的最后一行命令状态使用。
set 显示与缺省不同的设置
set all 显示所有设置
set ai/noai 自动/不自动缩进
set nu/nonu 显示/不显示行号
set list/nolist 显示/不显示不可打印字符
set showmode/noshowmode显示/不显示当前操作模式
set ts=4 设置键为4个空格
set ic/noic 忽略/不忽略大小写
文件的读写和退出
vi中文件的读写命令均在最后一行状态命令实现
w [...]&lt;img src=&quot;http://www1.feedsky.com/t1/568974135/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/vim-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><category>vim</category><pubDate>Fri, 15 Apr 2011 22:24:23 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/vim-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=943</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/vim-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974135/5428389</fs:itemid></item><item><title>YUI Compressor PHP Script</title><link>http://www.piao2010.com/yui-compressor-php-script</link><wfw:commentRss>http://www.piao2010.com/yui-compressor-php-script/feed</wfw:commentRss><description>前两天UED乔福童鞋让我帮忙写个mac下的YUI Compressor CMD Script ，BASH 不熟悉只能拿PHP写一个了，脚本比较简单，模仿windows版本的抄了一遍，丢出来更新下博客 ：) 比较偷懒没有支持整个目录压缩，需要的同学请自行改进吧。哈哈

?View Code PHP#!/usr/local/php/bin/php

&amp;#60;?php
/*
模仿YUI Compressor CMD Script(http://ourtools.googlecode.com/svn-history/r10/trunk/closure-compiler/compiler.cmd)
写的PHP版小工具
author:piao2010
website:http://piao2010.com
update:2011-04-12
*/
&amp;#160;
//定义jar包路径
$yuicompressor_jar = &amp;#34;/Library/yuicompressor-2.4.2/build/yuicompressor-2.4.2.jar&amp;#34;;
//需要压缩的文件
$source_file = $argv&amp;#91;1&amp;#93;;
$cur_dir = getcwd&amp;#40;&amp;#41;;
$source_file = $cur_dir.DIRECTORY_SEPARATOR.$source_file;
$path_parts = pathinfo&amp;#40; $source_file &amp;#41;;
//print_r($path_parts);
&amp;#160;
//REM 过滤文件后缀，只压缩 js css
&amp;#160;
if &amp;#40; !preg_match&amp;#40;'/(js)&amp;#124;(css)/i' , $path_parts&amp;#91;'extension'&amp;#93;&amp;#41; &amp;#41;
	exit&amp;#40;'Only support js and css file ! '&amp;#41;;
&amp;#160;
if &amp;#40; !file_exists&amp;#40; $source_file &amp;#41; &amp;#41;
	exit&amp;#40;' source_file does not exist ! '&amp;#41;;
&amp;#160;
if &amp;#40; $_ENV&amp;#91;'JAVA_HOME'&amp;#93; == '' [...]&lt;img src=&quot;http://www1.feedsky.com/t1/568974136/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/yui-compressor-php-script&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>code</category><category>YUICompressor</category><pubDate>Fri, 15 Apr 2011 22:17:45 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/yui-compressor-php-script#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=940</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/yui-compressor-php-script</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974136/5428389</fs:itemid></item><item><title>基于虚拟主机的apache + jboss 负载均衡配置</title><link>http://www.piao2010.com/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84apache-jboss-%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e9%85%8d%e7%bd%ae</link><wfw:commentRss>http://www.piao2010.com/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84apache-jboss-%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e9%85%8d%e7%bd%ae/feed</wfw:commentRss><description>前阵子有个项目需要用到基于虚拟主机的apache + jboss 负载均衡配置，所以整理了一下分享给大家，主要就是mod_jk的配置。

?View Code BASHapache + jboss 基于域名虚拟主机的负载均衡配置
&amp;#160;
#**********飘零的代码*************#
&amp;#160;
httpd.conf文件关键配置如下
&amp;#160;
Include &amp;#34;mod_jk.conf&amp;#34;
&amp;#160;
NameVirtualHost *
&amp;#160;
&amp;#160;
&amp;#60;VirtualHost *&amp;#62;
    ServerName xx.piao2010.com
    DocumentRoot /xx/htdocs/
    JkMountFile &amp;#34;xx_jk.properties&amp;#34;
    JkLogFile /logs/xx_jk.log
    JkLogLevel warn
&amp;#60;/VirtualHost&amp;#62;
&amp;#160;
&amp;#160;
&amp;#60;VirtualHost *&amp;#62;
    ServerName yy.piao2010.com
    DocumentRoot /yy/htdocs/
    JkMountFile &amp;#34;yy.properties&amp;#34;
   [...]&lt;img src=&quot;http://www1.feedsky.com/t1/568974137/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84apache-jboss-%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e9%85%8d%e7%bd%ae&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><category>mod_jk</category><category>apache</category><category>jboss</category><pubDate>Sat, 26 Mar 2011 22:52:34 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84apache-jboss-%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e9%85%8d%e7%bd%ae#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=932</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84apache-jboss-%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e9%85%8d%e7%bd%ae</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974137/5428389</fs:itemid></item><item><title>被保护的: web安全分享PPT</title><link>http://www.piao2010.com/web%e5%ae%89%e5%85%a8%e5%88%86%e4%ba%abppt</link><wfw:commentRss>http://www.piao2010.com/web%e5%ae%89%e5%85%a8%e5%88%86%e4%ba%abppt/feed</wfw:commentRss><description>这是篇受保护文章，因此没有摘要。&lt;img src=&quot;http://www1.feedsky.com/t1/568974138/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/web%e5%ae%89%e5%85%a8%e5%88%86%e4%ba%abppt&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>安全相关</category><pubDate>Mon, 07 Mar 2011 18:55:21 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/web%e5%ae%89%e5%85%a8%e5%88%86%e4%ba%abppt#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=921</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/web%e5%ae%89%e5%85%a8%e5%88%86%e4%ba%abppt</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974138/5428389</fs:itemid></item><item><title>逝去的2010</title><link>http://www.piao2010.com/%e9%80%9d%e5%8e%bb%e7%9a%842010</link><wfw:commentRss>http://www.piao2010.com/%e9%80%9d%e5%8e%bb%e7%9a%842010/feed</wfw:commentRss><description>大年初一的中午我还是赖在床上玩电脑（蹭邻居的无线网络，非常感谢），补上这份逝去的2010年的总结。
由于09年的时候签约于2010年3月底开始了实习，因为受不了每天下沙和市区的往返路途遥远，第一次和同学一起找房子合租。记得当时我们去二手市场买床垫，买桌子，买窗帘，然后又去超市买了一大堆的生活用品。从学校搬出来感觉很好，更自由了，没有固定的熄灯时间，热了有电风扇，冷了有取暖机。后来又陆续买了电饭煲和电磁炉，周末的时候我们自己做菜做饭，吃得很开心。
因为公司给校招生安排了一个多月的培训，所以实习期间和上学也没什么差别，每天有老师给我们上课做分享，最后每个小组还要完成一个项目进行答辩。期间我也请了几天假回学校做毕业设计的答辩，整个毕业设计都是利用周末和平时的空闲时间完成的。自从开始实习以后就没在学校睡过几次，随后是毕业合影，散伙饭，转眼我们已经正式离开了校园。
7月1日是正式入职的日期，意味着结束了实习期进入试用期，也正式开始接手部门的日常工作。
厦门Outing 第一次参加部门的演出，跳的是贱舞，非常搞笑的。
国庆长假回家，第一次当大舅，也祝愿姐姐和姐夫生活甜蜜蜜。
试用期结束转正，其中从工作上来说试用期与正式期无任何差别，在师兄的指导下对日常的工作也越来越熟悉。
11月11日是一个特殊的日子，商城促销交易额暴涨，给我们运维的同学带来了巨大的挑战，一直守到12号凌晨，虽然疲惫却很激动，因为我们顶住了考验。
进入公司将近1年时间，最大的感触就是氛围很好，很自由，工作很开心，每个月几乎都有一次活动，KTV，喝茶，吃饭，Outing。同事之间就和同学一样，一起玩一起工作，真诚相待，相互帮助。感谢各位同学一年以来对我的帮助，从Linux到网络到web安全，我收获了很多。
2010年第一次成功编写了网易博客的WEB蠕虫代码，随后又反馈给网易修复了漏洞，近期写了HTTP 慢连接攻击的脚本。
年终马总的支付宝红包也很给力，更加期待明年呐。哈哈。
2011年希望自己在技术上不断积累（最好能确定发展方向），工作上稳中有进，生活上天天开心。同时祝愿各位同学兔年吉祥，事事顺心！
最后写给家园的同学们：祝你们在2011年事事顺利，毕业了的同学工作顺利，工资大涨；在学校的同学学有所成，逢考必过！&lt;img src=&quot;http://www1.feedsky.com/t1/568974139/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/%e9%80%9d%e5%8e%bb%e7%9a%842010&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>生活琐碎</category><category>求职，合租</category><pubDate>Thu, 03 Feb 2011 13:38:51 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/%e9%80%9d%e5%8e%bb%e7%9a%842010#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=915</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/%e9%80%9d%e5%8e%bb%e7%9a%842010</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974139/5428389</fs:itemid></item><item><title>一次分享引发的血案 — HTTP Post Denial Of Service</title><link>http://www.piao2010.com/%e4%b8%80%e6%ac%a1%e5%88%86%e4%ba%ab%e5%bc%95%e5%8f%91%e7%9a%84%e8%a1%80%e6%a1%88-http-post-denial-of-service</link><wfw:commentRss>http://www.piao2010.com/%e4%b8%80%e6%ac%a1%e5%88%86%e4%ba%ab%e5%bc%95%e5%8f%91%e7%9a%84%e8%a1%80%e6%a1%88-http-post-denial-of-service/feed</wfw:commentRss><description>此文源于近日公司安全部门给我们的一次分享，之前我一直以为会有类似于0day之类的东东（我自作多情了-_-!），结果分享的重头戏却是演示HTTP Slow Header 和 HTTP Slow POST 攻击。
第一次看到这个攻击方式是去年在刺的博客，当时只是大致看了一下原理。后来又在第二届中国地方与行业网站峰会上看到刺的演讲里也有类似的攻击演示，因此这算是第三次了。分享结束以后有同学希望得到演示工具，但似乎未能如愿，于是就想自己写一个，只要是hack相关的东东总能让我莫名的兴奋。
首先两种攻击的原理：
1)GET请求的时候故意不发送完整的http header，等待一段时间后再把剩下的部分发完。
2)POST请求的时候设置一个比较大的content-length，然后以很低的速度发包，比如10s发一个字节。
两种攻击方式目的都是一样：hold住这个连接不断开。这样当客户端连接多了后，占用住了webserver的所有可用连接。
然后就是代码实现，先用自己最熟悉的PHP实现了建立一个SOCKET连接然后发送部分数据包，sleep，继续发送，如此循环直到发完全部数据。到这里我突然遇到了一个问题，PHP是不支持多线程的，那么如何实现高并发呢？采用循环的方式无法实现并发的效果。后来@HeseyWang 同学建议我用curl_multi_exec，完善了一下代码果然可以实现并发，后来发现其实采用pcntl_fork多进程也是可以实现的。
但是心里对PHP的多线程总是不太放心，于是又开始折腾Python代码。第一步建立socket连接，构造http 请求比较顺利，第二步是多线程，Google 之查到threading.Thread可以，折腾了半天总算是实现了。但在实际测试的时候发现多线程的并发连接数最高只能在1000多一点，考虑到公司的网络带宽肯定不是问题，于是尝试同时多开程序的方法，结束一不小心把测试的机器负载压到了850，直接失去响应，SSH都连不上。汗
看来只能把程序加上多进程才能实现高并发的要求，于是又折腾起了多进程。在此之前没接触过多进程多线程相关的东东，所以过程也比较曲折，又捣鼓了一天总算把多进程功能也实现了。
代码比较简陋，我就不贴出来了，文末附张图吧。
晚上拿同学的电脑做了测试，总结出以下几点：
1) HTTP Slow POST 攻击因为一开始发送的是完整的HTTP头，所以URI是必须存在的，如果请求一个不存在的URI，Apache会直接返回404而不会等你继续发送POST数据。
2) HTTP Slow Header 攻击因为一开始发送的不是完整的HTTP头，所以URI可以任意构造，Apache会一直等待你发送完最后的字符(n)才返回404，此时攻击已经完成。
3) mod-evasive 只能在一定程度上缓解这两种攻击，攻击者可以通过调整建立连接数的频率来躲避mod-evasive的防御。
解决方法：
1)小网站可以通过限制单个IP的最大连接数解决，但是如果这种攻击配合僵尸网络的话就无能为力了(小网站本来也就顶不住DDOS，似乎有点多此一举)。
2)引入mod-security模块，这个应该是比较好的解决方案，有能力的话自己写一个模块也行（网上已经有人给出关键代码），牛叉的公司整个webserver都是自己写的话就更容易解决了。
3)放弃Apache，改用nginx
附图:&lt;img src=&quot;http://www1.feedsky.com/t1/568974140/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/%e4%b8%80%e6%ac%a1%e5%88%86%e4%ba%ab%e5%bc%95%e5%8f%91%e7%9a%84%e8%a1%80%e6%a1%88-http-post-denial-of-service&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>code</category><category>security</category><category>POST</category><category>安全相关</category><category>http慢速攻击</category><category>apache</category><category>DOS</category><pubDate>Sat, 22 Jan 2011 21:26:52 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/%e4%b8%80%e6%ac%a1%e5%88%86%e4%ba%ab%e5%bc%95%e5%8f%91%e7%9a%84%e8%a1%80%e6%a1%88-http-post-denial-of-service#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=892</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/%e4%b8%80%e6%ac%a1%e5%88%86%e4%ba%ab%e5%bc%95%e5%8f%91%e7%9a%84%e8%a1%80%e6%a1%88-http-post-denial-of-service</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974140/5428389</fs:itemid></item><item><title>利用网易博客XSS和CSRF漏洞编写蠕虫</title><link>http://www.piao2010.com/%e5%88%a9%e7%94%a8%e7%bd%91%e6%98%93%e5%8d%9a%e5%ae%a2xss%e5%92%8ccsrf%e6%bc%8f%e6%b4%9e%e7%bc%96%e5%86%99%e8%a0%95%e8%99%ab</link><wfw:commentRss>http://www.piao2010.com/%e5%88%a9%e7%94%a8%e7%bd%91%e6%98%93%e5%8d%9a%e5%ae%a2xss%e5%92%8ccsrf%e6%bc%8f%e6%b4%9e%e7%bc%96%e5%86%99%e8%a0%95%e8%99%ab/feed</wfw:commentRss><description>注：本文只供研究参考之用，如作其他用途，概于本人无关。
飘零的代码 http://piao2010.com
前阵子（9月份）学习XSS Worm时候的一点小收获，我提交漏洞（http://www.wooyun.org/bugs/wooyun-2010-0631）将近两个月了网易还是没有修复，不知道是网易效率低下还是乌云没通知对人。今天抽空理一理，写出来更新一下博客。
漏洞详细已经说得很清楚了，典型的存储型XSS配合CSRF，我不再重复，主要谈一下XSS Worm编写思路吧。
既然是Worm就必须实现自我传播功能，因此思路也很明确，让访问被感染页面的用户（已登录且开通了博客功能的访客）在不知情的情况下自动添加一个感染模块，从而实现一传十，十传百，蠕虫才能不断传播开来。
第一步当然是手动添加一个模块，模块的功能就是引入一个远程JS文件（蠕虫），把这个过程抓包分析可以发现主要就是两次POST数据包。
至于POST里每个参数的含义可以通过不断变化提交分析出来，这个过程需要费些时间，我大概用了一周时间才完全弄清各个参数的含义，特别是scriptSessionId（困扰了三天），一开始抓包提交数据总是失败，以为是这个参数作用是类似token功能，后来分析调用的JS文件才发现其实只是一个随机数而已（这里还要感谢琏仓同学的帮助，跟踪分析这个变量还是挺不容易的），至于提交失败原因只是抓到的数据包里饱含了不可见字符（狂汗）。
另外还有涉及到博客页面皮肤和布局的参数，我们要做到感染页面的同时不改变原有的页面布局和皮肤以提高隐蔽性，不然蠕虫很容易会被发现。因此提交POST数据包的时候要计算好感染模块ID存放的位置，这一步也比较费时，需要先分析原先博客的样式和分栏情况，针对每种布局分开处理。
有了大致的思路接下来就是实现，一开始我采用Ajax方式模拟POST请求但是失败了，主要问题是跨域Ajax请求受到限制比较多，查阅了不少资料，一开始无法传递cookie，后来设置了XMLHttpRequest.withCredentials = “true”虽然cookie能传递了，但是http请求头还是Options，始终无法成功，个人认为想用Ajax方式实现跨域请求必须有服务器端相应支持才行，至于网易博客本身也是用dwr框架（我不熟悉）却能实现我还不明白，欢迎大侠指点。
最后我是变通了一下采用PHP程序实现POST数据，JS文件的里只是简单的调用一下PHP脚本并传递cookie。采用这种方式的缺点是调用的时候因为增加了cookie参数的传递显得很长容易暴露，优点是PHP脚本功能比较强大，可以记录下被感染博客地址，防止重复感染，另外也可以记录模块ID从而实现蠕虫的自我清除。
至此为止蠕虫自我传播功能和清除功能都有了，当然还可以在此基础上考虑其它功能，有了cookie毕竟我们能做的还有很多，电子邮件？但我没这么邪恶哈，只完成了自我传染和清除两个功能而已。
实际测试过程中我注册了两个小号，在页面上植入蠕虫模块，接下来就是想办法让别人访问到被感染的页面，这个随意发挥吧。一开始由于感染源少，传播速度很慢，差不多过了一个下午感染数量慢慢增加到100个左右速度就上来了，被感染的博客列表不断增加，尤其是到了晚上PV比较高的时段，我没敢测试太长时间就把感染脚本替换成清除脚本了。
整个分析编写Worm的过程主要是对HTTP数据包的分析和XSS配合CSRF漏洞的利用，由于是第一次编写难免磕磕碰碰，总共用了差不多三周时间才完成，但收获还是比较大的。希望网易能尽快把漏洞修复，大家也千万别搞破坏:)
2010-11-23 更新：今天网易工作人员与我取得联系，确认之前的漏洞已经及时修复，至于为什么我一直以为没修复是因为他们在更新或新增加时才做过滤，之前的会有残留，基于性能等方面的考虑在加载时未做过滤，而我一直是拿残留的做测试，误解了：）&lt;img src=&quot;http://www1.feedsky.com/t1/568974141/Cgeek/feedsky/s.gif?r=http://www.piao2010.com/%e5%88%a9%e7%94%a8%e7%bd%91%e6%98%93%e5%8d%9a%e5%ae%a2xss%e5%92%8ccsrf%e6%bc%8f%e6%b4%9e%e7%bc%96%e5%86%99%e8%a0%95%e8%99%ab&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>worm</category><category>csrf</category><category>security</category><category>安全相关</category><category>XSS</category><pubDate>Sat, 20 Nov 2010 14:34:49 +0800</pubDate><author>飘(piao2010)</author><comments>http://www.piao2010.com/%e5%88%a9%e7%94%a8%e7%bd%91%e6%98%93%e5%8d%9a%e5%ae%a2xss%e5%92%8ccsrf%e6%bc%8f%e6%b4%9e%e7%bc%96%e5%86%99%e8%a0%95%e8%99%ab#comments</comments><guid isPermaLink="false">http://www.piao2010.com/?p=878</guid><dc:creator>飘(piao2010)</dc:creator><fs:srclink>http://www.piao2010.com/%e5%88%a9%e7%94%a8%e7%bd%91%e6%98%93%e5%8d%9a%e5%ae%a2xss%e5%92%8ccsrf%e6%bc%8f%e6%b4%9e%e7%bc%96%e5%86%99%e8%a0%95%e8%99%ab</fs:srclink><fs:srcfeed>http://www.cgeek.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/Cgeek/~7318928/568974141/5428389</fs:itemid></item></channel></rss>
