??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品中文字幕有码专区,精品成人在线视频,日韩国产专区http://www.aygfsteel.com/crazycoding/category/45066.htmlGod helps those who help themselves. zh-cnTue, 24 Aug 2010 18:22:09 GMTTue, 24 Aug 2010 18:22:09 GMT60php Jason互{http://www.aygfsteel.com/crazycoding/archive/2010/08/24/329740.htmlYing-erYing-erTue, 24 Aug 2010 02:19:00 GMThttp://www.aygfsteel.com/crazycoding/archive/2010/08/24/329740.htmlhttp://www.aygfsteel.com/crazycoding/comments/329740.htmlhttp://www.aygfsteel.com/crazycoding/archive/2010/08/24/329740.html#Feedback0http://www.aygfsteel.com/crazycoding/comments/commentRss/329740.htmlhttp://www.aygfsteel.com/crazycoding/services/trackbacks/329740.htmlif($queryResult=mysql_query($str,$this->conn))
            {
                
$resultTable = new DbTable();
                
$fields = array();
                
$rows = array();
                
while ($property = mysql_fetch_field($queryResult))
                {
                    
$fields[] = array($property->name,$property->type);
                }
                
while ($row = mysql_fetch_array($queryResult,MYSQL_NUM)) {
                    
foreach($row as $k=>$v)
                    
if(is_numeric($v))
                    
$row[$k]=floatval($v);
                    
$rows[] = $row;
                }
                
$resultTable->fields = $fields;
                
$resultTable->rows = $rows;
            }

class DbTable
{
    
var $rows;
    
var $fields;
    
var $tableName;

    
/**
     * {
     *     objectType:"DbTable",
     *  tableName:"tableName",
     *     fields:[
     *         [col1Name,col1Type],
     *         [col2Name,col2Tpye],
     *         [col3Name,col3Type]],
     *     rows:[
     *         [row1Col1,row1Col2,row1Col3],
     *         [row2Col1,row2Col2,row2Col3],
     *         [row3Col1,row3Col2,row3Col3]]
     * }
     
*/
    
function toString()
    {
        
$jsonFields = json_encode($this->fields);
        
$josnRows = json_encode($this->rows);
        
$result = "{objectType:\"DbTable\",tableName:".$this->tableName.",fields:".$jsonFields.",rows:".$josnRows."}";
        
return $result;
    }
}

class DataSet
{
    
var $tables;

    
/**
     * {
     *     objectType:"DataSet",
     *     tables:[
     *             {
     *                objectType:"DbTable",
     *                 tableName:"table1Name",
     *                 fields:[
     *                     [col1Name,col1Type],
     *                     [col2Name,col2Tpye],
     *                     [col3Name,col3Type]],
     *                 rows:[
     *                     [row1Col1,row1Col2,row1Col3],
     *                     [row2Col1,row2Col2,row2Col3],
     *                     [row3Col1,row3Col2,row3Col3]]
     *           },
     *           {
     *               objectType:"DbTable",
     *                 tableName:"table2Name",
     *                 fields:[
     *                     [col1Name,col1Type],
     *                     [col2Name,col2Tpye],
     *                     [col3Name,col3Type]],
     *                 rows:[
     *                     [row1Col1,row1Col2,row1Col3],
     *                     [row2Col1,row2Col2,row2Col3],
     *                     [row3Col1,row3Col2,row3Col3]]
     *             }
     *            ]
     * }
     
*/
    
/**
     * $resultDataSet = new DataSet();
     * $tables[] = DbTable1->toString();
     * $tables[] = DbTable2->toString();
     * $resultDataSet->tables = $tables;
     * $resultDataSet->toString();
     
*/
    
function toString()
    {
        
$result = "{objectType:\"DataSet\",tables:[";
        
foreach($this->tables as $k=>$v)
        {
            
$result.= "{".$this->tables[$k]."},";
        }
        
$result = substr($result,0,-1);
        
$result.="]}";
        
echo $result;
    }
}

    /**
     * insert into tableName (col1,col2,col3) values ('v1','v2','v3')
     * jsonStr:
     * {
     *         "rows" : [col1,col2,col3]
     * }
     * @param $jsonStr
     * @param $tableName
     
*/
    
function rowInsert($jsonStr,$tableName){
        
$jsonDecode = json_decode($jsonStr);
        
$result     = "insert into ".$tableName." values(";
        
foreach($jsonDecode ->rows as $k => $v){
            
$result .= "'".$v."',";
        }
        
$result  = substr($result,0,-1);
        
$result .= ")";
        
return $result;
    }

    
/**
     * UPDATE tableName SET col1 = col1Value, col2 = col2Value WHERE 1=1 AND primaryKey = key
     * @param $jsonStr
     * @param $tableName
     
*/
    
function rowUpdate($jsonStr,$tableName)
    {
        
$jsonDecode = json_decode($jsonStr);
        
$sql        = 'DESCRIBE `'.$tableName.'`;';
        
$descRs     = mysql_query($sql);
        
$setStr     = "UPDATE ".$tableName." SET";
        
$whereStr   = "  WHERE true ";
        
$i          = 0;
        
while ($row = mysql_fetch_array($descRs,MYSQL_NUM)) {
            
if($row[3== "PRI")
            
$whereStr.=" AND ".$row[0]." = '".$jsonDecode->rows[$i]."";
            
$setStr.= " ".$row[0]." = '".$jsonDecode->rows[$i]."',";
            
$i++;
        }
        
$setStr = substr($setStr,0,-1);
        
return $setStr.$whereStr;
    }

    
/**
     * DELETE tableName WHERE 1=1 AND primaryKey = key
     * @param $jsonStr
     * @param $tableName
     
*/
    
function rowDelete($jsonStr,$tableName)
    {
     
$jsonDecode = json_decode($jsonStr);
     
$sql        = 'DESCRIBE `'.$tableName.'`;';
     
$descRs     = mysql_query($sql);
     
$result     = " DELETE ".$tableName." WHERE true ";
     
while ($row = mysql_fetch_array($descRs,MYSQL_NUM)) {
         
$i=0;
         
if($row[3== "PRI")
         
$result.=" AND ".$row[0]." = '".$jsonDecode->rows[$i]."";
         
$i++;
     }
     
return $result;
    }






































Ying-er 2010-08-24 10:19 发表评论
]]>
【{】win下Apache2.2+php5+MySQL5+zend的环境搭建配|?/title><link>http://www.aygfsteel.com/crazycoding/archive/2010/06/06/322871.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sun, 06 Jun 2010 01:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/crazycoding/archive/2010/06/06/322871.html</guid><wfw:comment>http://www.aygfsteel.com/crazycoding/comments/322871.html</wfw:comment><comments>http://www.aygfsteel.com/crazycoding/archive/2010/06/06/322871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/crazycoding/comments/commentRss/322871.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/crazycoding/services/trackbacks/322871.html</trackback:ping><description><![CDATA[1.便捷ҎQ装一体化环境Q如果你q打算深入Q或者刚入门。则可以先用一体化环境来配|。优Ҏ下完安装卛_使用Q?分钟p搞定。如果原来系l中装有IISQ则把端口设?81或者其他非80端口。(以下皆ؓapache+php+mysql+zendQ?br />  <br />   1> php4的一体化环境<br /> http://www.onlinedown.net/soft/22078.htm<br />  <br />   2> php5的一体化环境<br /> http://www.onlinedown.net/soft/42567.htm<br />  <br /> 2.如果你需要一个较为稳健而功能强劲的配置环境Q则参看以下。本文采用最新版本的php、apache、mysql、zend?br />  <br /> 其实Q因为网上很多文章其实也没什么错Q但有些l节的地Ҏ问题。特别是在apache2.2.4与php5模块化安装的整合上?br />  <br /> 先准备安装文Ӟ几个安装文g我用华军软g园的下蝲地址Q大家放心下Q?br />  <br /> apache2.2.4<br /> 最新版http://www.onlinedown.net/soft/11528.htm<br /> 发帖时最新版http://ytcnc.onlinedown.net/down/apache_2.2.4-win32-x86-no_ssl.zip<br />  <br /> php5.2.3<br /> 最新版http://www.onlinedown.net/soft/1772.htm<br /> 发帖时最新版http://sx.huajun.net/down/php-5.2.3-Win32.zip<br />  <br /> Mysql5.0.41<br /> 最新版http://www.onlinedown.net/soft/3573.htm<br /> 发帖时最新版http://sccnc.onlinedown.net/down/mysql-5.0.41-win32.zip<br />  <br /> zend optimizer 3.2.6<br /> 最新版http://www.onlinedown.net/soft/32228.htm<br /> 发帖时最新版http://sccnc.onlinedown.net/down/ZendOptimizer-3.2.6-Windows-i386.zip<br />  <br /> phpmyadmin<br /> 最新版http://www.onlinedown.net/soft/2616.htm<br /> 发帖时最新版http://sccnc.onlinedown.net/down/phpMyAdmin-2.10.3-rc1-all-languages.zip<br />  <br /> -----------------------------------------------------------------------<br />  <br /> 1.安装apache2.2.4x个目录比如我的是D:"apache2<br /> 2.解压php5到D:"apache2"php5目录?br /> 3.安装mysql5到D:"apache2"mysql目录?br />  <br /> 4.配置apacheQ?br />  1)打开d:"apache2"conf目录下的httpd.conf文g?br />  2)apache httpd.conf讄<br />   A.|站ȝ录设|:搜烦DocumentRoot "D:/apache2/htdocs"<br />   修改引号中的地址Qؓapache|页ȝ录。也是http://localhost: 端口L目录?br />   B.端口讄Q搜?listenQ改?Listen 81Q此例中?1为端口)。如不装IIS可保留默认gؓ80。设?1Q则主页?http://localhost:81 否则为http://localhost<br />   C.加蝲php5模块化安装:搜烦LoadmoduleQ在后面加一行:<br /> LoadModule php5_module d:/apache2/php/php5apache2_2.dll<br />  <br /> Q这里是很多|上ȝ出错的地方,apache2.2版本以下一般ؓ<br /> LoadModule php5_module d:/apache2/php/php5apache2.dll<br /> apache2.2以上的版本则不行。更有甚者,竟然把php5apache2.dll改写成支持apache2.2的了Q牛是很牛了Q但不知道中国搞技术的到底是怎么了,都懒得自L考,一Ҏ疑精都没有。)<br />   <br />   D. php格式解析<br />    搜烦 addType application在后面加一行:<br />    AddType application/x-httpd-php .php<br />   <br />   E.字符?br /> <br />   搜烦 AddDefaultCharset ISO-8859-1 其改ؓ<br /> <br />   AddDefaultCharset GB2312<br /> <br /> 5.配置php<br />   至D:"apache2"php目录下,?php.ini-dist或php.ini- recommended拯至c:"windows目录下,改名为php.ini。拷贝D:"apache2"php目录下的php5ts.dll,libmysql.dll至C:"windows"system32目录?br />  <br />    配置php.ini<br />    A.扑ֈextension_dir讄?"d:"apache2"php"ext"l对路径Q否则有些环境中会出错?br />     <br />    b.打开功能扩展<br /> 搜烦以下行,把前面的分号删除。比?br /> “;extension=php_mysql.dll”改ؓ“extension=php_mysql.dll<br /> ”<br /> #下面两行为mysql5必备Q记得php_mysqli.dll必须加蝲Q否则连不上?br /> extension=php_mysql.dll  <br /> extension=php_mysqli.dll<br />  <br /> #phpqsql serverQ有用到的就讄一?br /> extension=php_mssql.dll<br /> <br /> #curl功能扩展Q想用php写些脚本处理q程服务期的响应消息的可以打开<br /> extension=php_curl.dll<br />  <br /> #GD库安装,此功能打开可用数据库以二进制存储图?br /> extension=php_gd2.dll<br />  <br /> #东亚语系必备Q增加字W处理速度<br /> extension=php_mbstring.dll<br />  <br />    C.实用功能自定义配|?br />  <br /> #session的存储目录。如果有内存虚拟盘Q可以把用到的暂存处理目录都讄?br /> 内存虚拟盘中q一步提高服务器响应速度?br />    session.save_path = D:/apache2/htdocs/php_session <br />  <br /> #q个是每个脚本运行的最长时_可以自己修改加长Q单位秒<br /> max_execution_time = 30<br /> <br /> #q是每个脚本可以消耗的旉Q单位也是秒<br /> max_input_time = 60<br /> <br /> #q个是脚本运行最大消耗的内存Q最好设?6M以上Q有的程序要求,比如openads<br /> <br /> memory_limit = 16M<br /> <br /> #上蝲文g的最大许可大,一般post大小>upload_max_filesize。比如我的设|:<br /> <br /> post_max_size = 300M<br /> <br /> upload_max_filesize = 250M<br /> <br /> 6.xQ配|完成大半?br /> <br /> mysql与zend只要按需安装卛_。装完后重启apache服务器即可?br /> <br /> 7.最后推荐个好东西,apache的monitor.exeQ可以控制apache、myql?IIS、sql server{服务器开兟뀂好东西Q我找了Z的。感谢原作者,抱歉忘了大名<br /> <br /> http://www.1thz.cn/apachemonitor.exe<br />   <br /> 8.如果您对服务器性能要求很高Q我q里推荐您一个非常棒的^台组合。lighttpd可以取代apacheQ更轻,性能更优U?PostPre SQL 取代 MysqlQ极其强大的开源数据库Q完全满企业商务数据库需求? <img src ="http://www.aygfsteel.com/crazycoding/aggbug/322871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/crazycoding/" target="_blank">Ying-er</a> 2010-06-06 09:01 <a href="http://www.aygfsteel.com/crazycoding/archive/2010/06/06/322871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP新手上\http://www.aygfsteel.com/crazycoding/archive/2010/06/05/321763.htmlYing-erYing-erSat, 05 Jun 2010 09:25:00 GMThttp://www.aygfsteel.com/crazycoding/archive/2010/06/05/321763.htmlhttp://www.aygfsteel.com/crazycoding/comments/321763.htmlhttp://www.aygfsteel.com/crazycoding/archive/2010/06/05/321763.html#Feedback0http://www.aygfsteel.com/crazycoding/comments/commentRss/321763.htmlhttp://www.aygfsteel.com/crazycoding/services/trackbacks/321763.html 一 调试
1、观察变?使用var_dump($var_name)观察变量cd与内?br />            使用getTypeQ?var_nameQ?/span>查看所属类?br />            使用defined("")和isset()查看帔R是否已定?br />
2、观察程序执行效率,使用WinCacheGrind载入xdebug目录中的文g

二、特D变?br />     1?_SERVER
        可用var_dump($_SERVER)观察变量作用。储存了常用信息?br />
    2?_SESSION
        使用session_start()之后启用会话?br />
    3?_COOKIE
        cookie

    4?_REQUEST
        保存的是post/get的变?br />
    5?_POST
        仅限post

    6?_GET
        仅限get //$_GET["username"]

    7?_FILES
        form提交的文?br />
    8、定义常量:
        define("name","...");//帔R只能包含标量数据Q只能在声明的时候赋|q不能在q行时改?br />
    9、几个体l常量:
        __FILE__、__LINE__、PHP_VERSION、PHP_OS


三、类的说?br />     1、一个简易的c?br />         class test{
            private $pro1;
            public static $pro2;

            function do1(){
            }
            public static function do2(){
            }
        }
        非静态的调用
        $t = new test();
     $t->pro1;
     $t->do1();
     静态调?br />      test::pro2;
     test::do2();
    2、构造函数和析构函数
        function __construct() {
        }
        function __destruct() {
        }


四、自动加载类
    1、当调用的类未找刎ͼ会自动调用以下函数。如果调用之后类扑ֈ了,则l执行;仍旧未找刎ͼ则报?br />                 function __autoload($class_name){
             include $class_name.'.php';
         }
    2、spl_autoload_register可以注册一?__autoload函数
    
     自动加蝲cd以代码变得更优雅,无需提前includeQ但是如果有复杂的\径则导致性能下降
     (盘IO是媄响PHP性能的一个要点,另一个是数据?


五、数l?br />     1、数l是一个K/Vl构的变量,可以存储多类型的数据Q多数据cdQ?br />     2、多l数l类似JSON格式Q长度可?br />     3、数l的声明Q烦引数l:数组的烦引值是整数Q?开?br />                   兌数组Q数l以字符串作为烦引?br />     4、数l遍历:①for($i=0;$i<count($arr);$i++)
                     echo "\$arr["."]=".$arr[$i]."<br>";
                ②for($arr as $value)
                     echo $value."<br>";
                  for($arr as $key=>$value)
                     echo "\$arr[".$key."]=".$value."<br>";


六、PHP手册
    遇上不认识的函数h开PHP手册Q用烦引功能快速查扑և数参数和q回倹{也可用netbeans自动提示功能参阅其详情?br />

Ying-er 2010-06-05 17:25 发表评论
]]>
[收藏]高危nginx文gcd错误解析漏洞 http://www.aygfsteel.com/crazycoding/archive/2010/05/21/321567.htmlYing-erYing-erFri, 21 May 2010 11:59:00 GMThttp://www.aygfsteel.com/crazycoding/archive/2010/05/21/321567.htmlhttp://www.aygfsteel.com/crazycoding/comments/321567.htmlhttp://www.aygfsteel.com/crazycoding/archive/2010/05/21/321567.html#Feedback0http://www.aygfsteel.com/crazycoding/comments/commentRss/321567.htmlhttp://www.aygfsteel.com/crazycoding/services/trackbacks/321567.html

漏洞介绍Qnginx是一N性能的web服务器,使用非常q泛Q其不仅l常被用作反向代理,也可以非常好的支持PHP的运行?0sec发现其中存在一个较Z重的安全问题Q默认情况下可能D服务器错误的Q何类型的文g以PHP的方式进行解析,q将D严重的安全问题,使得恶意的攻击者可能攻h持php的nginx服务器?/p>


漏洞分析Qnginx默认以cgi的方式支持php的运行,譬如在配|文件当中可以以


location ~ ".php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}

的方式支持对php的解析,location对请求进行选择的时候会使用URI环境变量q行选择Q其中传递到后端Fastcgi的关键变? SCRIPT_FILENAME由nginx生成?fastcgi_script_name军_Q而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,q里是产生问题的点。而ؓ了较好的支持PATH_INFO的提取,在PHP 的配|选项里存在cgi.fix_pathinfo选项Q其目的是ؓ了从SCRIPT_FILENAME里取出真正的脚本名?br /> 那么假设存在一个http://www.80sec.com/80sec.jpgQ我们以如下的方式去讉K

http://www.80sec.com/80sec.jpg/80sec.php


会得到一个URI

/80sec.jpg/80sec.php

l过location指oQ该h会交给后端的fastcgi处理Qnginx为其讄环境变量SCRIPT_FILENAMEQ内容ؓ

/scripts/80sec.jpg/80sec.php

而在其他的webserver如lighttpd当中Q我们发现其中的SCRIPT_FILENAME被正的讄?br />
/scripts/80sec.jpg

所以不存在此问题?br /> 后端的fastcgi在接受到该选项Ӟ会根据fix_pathinfo配置军_是否对SCRIPT_FILENAMEq行额外的处理,一般情况下如果不对fix_pathinfoq行讄媄响用PATH_INFOq行路由选择的应用,所以该选项一般配|开启。Php通过该选项之后查扑օ中真正的脚本文g名字Q查扄方式也是查看文g是否存在Q这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别?br />
/scripts/80sec.jpg?0sec.php

最后,?scripts/80sec.jpg作ؓ此次h需要执行的脚本Q攻击者就可以实现让nginx以php来解析Q何类型的文g了?/font>

POCQ? 讉K一个nginx来支持php的站点,在一个Q何资源的文g如robots.txt后面加上/80sec.phpQ这个时候你可以看到如下的区别:

讉Khttp://www.80sec.com/robots.txt

HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:05:30 GMT
Content-Type: text/plain
Content-Length: 18
Last-Modified: Thu, 20 May 2010 06:26:34 GMT
Connection: keep-alive
Keep-Alive: timeout=20
Accept-Ranges: bytes

讉K讉Khttp://www.80sec.com/robots.txt/80sec.php

HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:06:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.6

其中的Content-Type的变化说明了后端负责解析的变化,该站点就可能存在漏洞?/p>

漏洞厂商Qhttp://www.nginx.org

解决ҎQ?/p>

我们已经试联系官方Q但是此前你可以通过以下的方式来减少损失

关闭cgi.fix_pathinfo?

或?br />
if ( $fastcgi_script_name ~ "..*"/.*php ) {
return 403;
}


文章来源:80SEC



Ying-er 2010-05-21 19:59 发表评论
]]>
վ֩ģ壺 ڳ| | ƺ| | | | | | | | ̶| | | | ɽ| | | | | | | | | Դ| | | Ӧ| | ɽ| | պ| ˮ| | ˮ| | | | ij| ³ľ| | |