注意OCLAB.cn将停止Gnuboard4官方版本的更新，稍后将推出完全中国本地化G4CN，由于核心结构依然是
Gnuboard4，继续使用G4的用户请参考G4CN的升级说明进行手动升级。
-- 2012-09-04 -- 
www.Oclab.cn  // QQ交流群:259712621 

4.36.04 (2012.08.22) 
    :  由于Flash的升级导致 cheditor 5.04 部分功能不能正常工作，升级为 cheditor 5.09.2  
    :  因部分页面兼容性问题删除4.36.03 版本中涉及到的CHARSET 关联补丁。 
    ：  修改部分文件包含uft-8签名的问题，导致在win + apache模式下出现错误的问题
   	：  删除cheditor4版本系列 

        cheidtor5/* 

        common.php 删除

            header("Content-Type: text/html; charset={$g4['charset']}"); 
4.36.03 (2012.07.20)
    :   [安全]游客刊登内容有可能被其他人恶意修改的漏洞
    :   空白比较代码导致的错误 (letsgolee提供)
    :   CHARSET设定，防止在部分弹窗出现乱码的问题

        bbs/write.php

            set_session('ss_bo_table', $_REQUEST['bo_table']);
            set_session('ss_wr_id', $_REQUEST['wr_id']);

        bbs/write_update.php

            if (get_session('ss_bo_table') != $_POST['bo_table'] || get_session('ss_wr_id') != $_POST['wr_id']) {
                alert('请使用正确的方式进行操作');
            }
        
        lib/common.lib.php  check_string()
        
            else if ($oc >= 0x20) { 修改为
            else if ($oc == 0x20) { 

        common.php 

            header("Content-Type: text/html; charset={$g4['charset']}");添加.

4.36.02 (2012.06.27)
    :   防止利用flash+javascript进行跨站攻击(i2sec )
    :   修复4.36.01 代码错误

        lib/common.lib.php 添加

            $content = preg_replace_callback("#<([^>]+)#", create_function('$m', 'return "<".str_replace("<", "&lt;", $m[1]);'), $content);
            $content = preg_replace("/\<(\w|\s|\?)*(xml)/i", "", $content);

            // 防止flash代码与javascript关联进行攻击
            // value="always" 替换为 value="never" , allowScriptaccess="always" 替换为 allowScriptaccess="never" 
            $content = preg_replace("/((?<=\<param|\<embed)[^>]+)(\s*=\s*[\'\"]?)always([\'\"]?)([^>]+(?=\>))/i", "$1$2never$3$4", $content);

4.36.01 (2012.06.26)
    :   修补潜在的XSS攻击隐患 (i2sec )
        较早前版本有些效率问题
            
        lib/common.lib.php  conv_content() 修改

            $content = preg_replace_callback("#<([^>]+)#", create_function('$m', 'return "<".htmlspecialchars($m[1], ENT_NOQUOTES);'), $content);

4.36.00 (2012.06.21)
    :   DB SESSION 导致MySQL 负载，转换为FILE SESSION 


        data/session 创建session
        变更session属性为777，支持ssh就用chmod 777 data/session ，也可以在ftp进行


        data/session 目录下创建.htaccess文件，内容 deny from all


        common.php 修改如下

            //-------------------------------------------
            // SESSION 设置
            //-------------------------------------------
            ini_set("session.use_trans_sid", 0);    // 不自动传递PHPSESSID
            ini_set("url_rewriter.tags",""); // 防止在Url出现phpsessid

            session_save_path("{$g4['path']}/data/session");

            if (isset($SESSION_CACHE_LIMITER))
                @session_cache_limiter($SESSION_CACHE_LIMITER);
            else
                @session_cache_limiter("no-cache, must-revalidate");

            //==============================================================================
            // 公用变量
            //==============================================================================
            // 基本环境设定
            // 获取基本变量，其他根据使用状况调用
            $config = sql_fetch(" select * from $g4[config_table] ");

            ini_set("session.cache_expire", 180); // session cache保存时间 分钟
            ini_set("session.gc_maxlifetime", 10800); // session data의 garbage collection 指定存在时间 (秒)
            ini_set("session.gc_probability", 1); // session.gc_probability：session.gc_divisor进行gc(数据回收)效率管理。默认值为1 更多内容参考session.gc_divisor
            ini_set("session.gc_divisor", 100); // session.gc_divisor： session.gc_probability进行gc(数据回收) 开启几率. 几率通过 gc_probability/gc_divisor计算，例, 1/100 GC执行几率为1% ，默认值session.gc_divisor 100

            session_set_cookie_params(0, "/");
            ini_set("session.cookie_domain", $g4['cookie_domain']);

            @session_start();

4.35.02 (2012.06.15)
    :   4.35.01 session创建时，网站编码使用utf-8时数据库也创建为utf8 
        
        lib/dbsession.lib.php 添加

            if (strtolower($g4['charset']) == 'utf-8') {
                $sql .= " DEFAULT CHARSET=utf8 ";
            }

4.35.01 (2012.06.13)
    :   4.35.00 补丁中 cookie_domain 设定出错，导致多域名Session共享部分出错 (cosy提供)
    :   session时间默认1440秒(24分)过短，修改为10800秒(3小时) 
    :   创建session talbe部分加入index

        common.php 修改如下

            //-------------------------------------------
            // SESSION 设定
            //-------------------------------------------
            include_once("$g4[path]/lib/dbsession.lib.php");
            $session = new g4_dbsession();
            session_set_save_handler(array($session, 'open'), 
                                     array($session, 'close'),
                                     array($session, 'read'),
                                     array($session, 'write'),
                                     array($session, 'destroy'),
                                     array($session, 'gc'));

            session_set_cookie_params(0, "/");
            ini_set("session.cookie_domain", $g4['cookie_domain']);
            ini_set("session.cache_expire", 180); // session保存时间 (分) 180分 == 3小时
            ini_set("session.gc_maxlifetime", 10800); // session data的存在时间garbage collection 10800秒 == 3小时
            ini_set("session.use_trans_sid", 0);    // 不自动传递PHPSESSID
            ini_set("url_rewriter.tags",""); // 防止在Url地址中出现PHPSESSID

            if (isset($SESSION_CACHE_LIMITER))
                @session_cache_limiter($SESSION_CACHE_LIMITER);
            else
                @session_cache_limiter("no-cache, must-revalidate");

            @session_start();
            //-------------------------------------------

        lib/dbsession.lib.php 修改如下

            $sql = " CREATE TABLE `$g4[session_table]` (`ss_id` CHAR(32) NOT NULL, `ss_data` TEXT NOT NULL, `ss_datetime` DATETIME NOT NULL, PRIMARY KEY (`ss_id`), KEY `ss_datetime` (`ss_datetime`)) ENGINE = MYISAM ";
     
4.35.00 (2012.06.12)
    :   防止SESSION Data 暴露，改用DB SESSION (HSEngine 提供)
    :   利用$_SERVER['PHP_SELF'] 进行XSS攻击的漏洞

        lib/dbsession.lib.php 新增文件

        config.php 添加

            $g4['session_table']       = $g4['table_prefix'] . "session";       // session数据表

        common.php 

            找到所有SESSION相关代码 修改为以下代码 

            //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            $_SERVER['PHP_SELF'] = htmlentities($_SERVER['PHP_SELF']);

            //-------------------------------------------
            // SESSION 设定
            //-------------------------------------------
            include_once("$g4[path]/lib/dbsession.lib.php");
            $session = new g4_dbsession();
            session_set_save_handler(array($session, 'open'), 
                                     array($session, 'close'),
                                     array($session, 'read'),
                                     array($session, 'write'),
                                     array($session, 'destroy'),
                                     array($session, 'gc'));

            ini_set("session.use_trans_sid", 0);    // PHPSESSID不自动传递
            ini_set("url_rewriter.tags",""); // 防止在Url地址中出现PHPSESSID

            if (isset($SESSION_CACHE_LIMITER))
                @session_cache_limiter($SESSION_CACHE_LIMITER);
            else
                @session_cache_limiter("no-cache, must-revalidate");

            @session_start();
            //-------------------------------------------
            //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

4.34.30 (2012.05.29)
    :   修复4.34.28 补丁导致搜索时不能进行分类搜索的错误

        lib/common.lib.php 的 get_sql_search() 

4.34.29 (2012.05.27)
    :   4.34.28 补丁中 embed 代码 allowscriptaccess 判断为 script 导致影音文件不能正常显示

        lib/common.lib.php 修改 bad120422()

            function bad120422($matches)
            {
                $tag  = $matches[1];
                $code = $matches[2];
                if (preg_match("#\bscript\b#i", $code)) {
                    return "$tag 请勿包含javascript代码.";
                } else if (preg_match("#\bbase64\b#i", $code)) {
                    return "$tag 请勿包含BASE64代码";
                }
                return $matches[0];
            }

4.34.28 (2012.05.24)
    :   在论坛版块内搜索时输入html代码会导致显示错误的修补 
        get_sql_search() 修改
    :   [安全补丁] XSS 潜在漏洞 (i2sec )
        conv_content(), bad120422() 修改

        lib/common.lib.php

4.34.27 (2012.05.22)
    :   [安全补丁] SQL Injection 注入攻击漏洞,(BlackFalcon)通过韩国互联网振兴会转达(类似国内工信部信息产业司)

        bbs/download.php 添加

            $no = (int)$no;

4.34.26 (2012.05.03)
    :   4.34.23 中正常的object代码返回不正常的问题
        lib/common.lib.php 的

            function bad120422($matches)
            {
                $code = $matches[1];
                if (preg_match("#script#i", $code)) {
                    return "OBJECT 禁止包含Script代码";
                } else if (preg_match("#base64#i", $code)) {
                    return "OBJECT 禁止使用 BASE64代码";
                }
                return $matches[0]; // 增加部分
            }

4.34.25 (2012.04.30)
    :   [安全强化] 安装时在 data 目录内创建.htaccess 文件，防治在data目录及下面目录中执行 
        .htaccess .htpasswd .php .phtml .html .htm .inc .cgi .pl 等文件

        请创建.htaccess放置到data目录内 （非apache用户请参考论坛帮助）

        <FilesMatch "\.(htaccess|htpasswd|[Pp][Hh][Pp]|[Pp]?[Hh][Tt][Mm][Ll]?|[Ii][Nn][Cc]|[Cc][Gg][Ii]|[Pp][Ll])">
        Order allow,deny 
        Deny from all
        </FilesMatch>

4.34.24 (2012.04.23)
    :   4.34.23 的conv_content()函数内定义了一个函数导致发生错误.
        bad120422() 函数转到conv_content() 外面即可 

        lib/common.lib.php

4.34.23 (2012.04.22)
    :   [XSS] 修复利用OBJECT 执行 javascript的安全隐患(i2Sec 8期 )
    :   [XSS] 防止插入HTML代码 (i2Sec 8期)
    :   login, logout时外部重新读取时设定为不能再url添加域名(i2Sec 8期)
    :   cheditor4由于存在删除漏洞，以后版本将不再包含cheditor4 (i2Sec 8期)
    :   另外i2Sec 8期还有提供了很多关于SQL Injection攻击方式的报告，但由于Gnuboard4是开源代码所以所提供的对应攻击方式
        很难认定为是SQL Injection，感谢i2Sec 8期的各位同学

        lib/common.lib.php 

            function bad120422($matches)
            {
                $code = $matches[1];
                if (preg_match("#script#i", $code)) {
                    return "OBJECT 禁止包含Script代码";
                } else if (preg_match("#base64#i", $code)) {
                    return "OBJECT 禁止包含BASE64代码";
                }
            }

            // object 代码中禁用javascript 代码
            $content = preg_replace_callback("#<object([^>]+)>#i", "bad120422", $content);

        bbs/write_update.php 的

            $wr_name = strip_tags(mysql_escape_string($_POST['wr_name']));

        bbs/login.php
        bbs/logout.php 的

            $p = parse_url($url);
            if ($p['scheme'] || $p['host']) {
                alert("不能指定URL域名.");
            }

4.34.22 (2012.03.30)
    :   2012年 3月 30日 根据韩国法律要求即日起不在使用身份证号码注册
		涉及文件
        adm/config_form.php
        bbs/register_form.php
        skin/member/basic/register.skin.php

4.34.21 (2012.03.09)
    :   [安全补丁] 利用文件名的XSS 安全隐患 (wh1ant提供)
    :   修复UTF-8 版本使用非英文连接时出现错误的bug (forever, NaviGator提供)


        skin/board/basic/view.skin.php 修改以下代码

            echo "<a href=\"javascript:file_download('{$view[file][$i][href]}', '".urlencode($view[file][$i][source])."');\" title='{$view[file][$i][content]}'>";
            ...
            <? if ($board[bo_download_point] < 0) { ?>if (confirm("'"+decodeURIComponent(file)+"' 下载附件需要支付积分(<?=number_format($board[bo_download_point])?>分)\n\n多次重复下载积分仅扣除一次.\n\n点击确定支付积分并开始下载"))<?}?>


        lib/common.lib.php 的 function url_auto_link($str) 中

            $str = preg_replace("/([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET='$config[cf_link_target]'>\\2</A>", $str);
            替换成 

            global $g4;
            ...
            if (strtoupper($g4['charset']) == 'UTF-8') {
                $str = preg_replace("/([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET='$config[cf_link_target]'>\\2</A>", $str);
            } else {
                $str = preg_replace("/([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET='$config[cf_link_target]'>\\2</A>", $str);
            }
            


4.34.20 (2012.03.02)
    :   修复使用UTF-8版本时cut_str不能正常工作的bug
        http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=1328#c_1355
    :   邮编数据更新 2012.01.26. 51,898件 

        lib/common.lib.php 的 cut_str() 函数修改
        bbs/zip.db 
-----------------------------------------------------------------------------------------------

4.34.19 (12.2.3) 春节期间累计更新
     韩版：4.34.19 (2012.01.17) 
    :  修复在有些服务器上认证码不能正常显示的问题 
        (通常出现在海外服务器上设置非utf编码时出现) 

        bbs/kcaptcha_result.php 增加下段代码 

            header("Content-Type: text/html; charset=$g4[charset]");
            
	韩版4.34.18 (2012.01.03) 
    :  修复由于PHP版本差异导致basic会员模块在euc-kr or gb2312版本中ajax不能正常工作的错误 (提供：konahn) 

        skin/member/basic/_common.php 修改如下

        $g4_path = "../../.."; // common.php 相对路径 
        include_once("$g4_path/common.php"); 
        header("Content-Type: text/html; charset=$g4[charset]"); // 4.34.18 添加代码


************************************************************************************** 
2012年开始韩国官方也仅对utf-8版本提供技术维护及支持，原有的euckr版本不在提供更新服务。
	韩版4.34.17 (11.12.09) 
    :  [安全补丁] 使用搜索功能$sfl变量有可能泄露密码的BUG(提供：i2Sec-[kaist]) 

        bbs/search.php 文件中

            switch ($field[$k]) 
            { 
                case "mb_id" : 
                case "mb_name" : 
                    $str .= "$field[$k] = '$s[$i]'"; 
                    break; 
                default : 
                    if (preg_match("/[a-zA-Z]/", $search_str)) 
                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))"; 
                    else 
                        $str .= "INSTR($field[$k], '$search_str')"; 
                    break; 
            } 

            替换成： 

            switch ($field[$k]) 
            { 
                case "mb_id" : 
                case "wr_name" : 
                    $str .= "$field[$k] = '$s[$i]'"; 
                    break; 
                case "wr_subject" : 
                case "wr_content" : 
                    if (preg_match("/[a-zA-Z]/", $search_str)) 
                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))"; 
                    else 
                        $str .= "INSTR($field[$k], '$search_str')"; 
                    break; 
                default : 
                    $str .= "1=0"; // 永远设定为假 
                    break; 
            } 

            


        lib/common.lib.php 文件中

            switch ($field[$k]) { 
                case "mb_id" : 
                case "wr_name" : 
                    $str .= " $field[$k] = '$s[$i]' "; 
                    break; 
                case "wr_hit" : 
                case "wr_good" : 
                case "wr_nogood" : 
                    $str .= " $field[$k] >= '$s[$i]' "; 
                    break; 
                // 序号=相应关键词 X -1 
                case "wr_num" : 
                    $str .= "$field[$k] = ".((-1)*$s[$i]); 
                    break; 
                // LIKE 速度及效率高于 INSTR  
                default : 
                    if (preg_match("/[a-zA-Z]/", $search_str)) 
                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))"; 
                    else 
                        $str .= "INSTR($field[$k], '$search_str')"; 
                    break; 
            } 

            替换成：

            switch ($field[$k]) { 
                case "mb_id" : 
                case "wr_name" : 
                    $str .= " $field[$k] = '$s[$i]' "; 
                    break; 
                case "wr_hit" : 
                case "wr_good" : 
                case "wr_nogood" : 
                    $str .= " $field[$k] >= '$s[$i]' "; 
                    break; 
                // 序号=相应关键词 X -1 
                case "wr_num" : 
                    $str .= "$field[$k] = ".((-1)*$s[$i]); 
                    break; 
                case "wr_ip" : 
                case "wr_password" : 
                    $str .= "1=0"; // 永远设定为假  
                    break; 
                // LIKE 速度及效率高于 INSTR  
                default : 
                    if (preg_match("/[a-zA-Z]/", $search_str)) 
                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))"; 
                    else 
                        $str .= "INSTR($field[$k], '$search_str')"; 
                    break; 
            } 
************************************************************************************** 
*           感谢一年来对Gfans己G4的支持，祝所有用户在新的一年里身体健康，万事如意！           *	************************************************************************************** 
           
4.34.16 (11.11.15) 
    :  [安全补丁] 预防利用XSS漏洞进行攻击 (i2Sec提供) 

        lib/common.lib.php 中 function conv_content() 部分 
    
        $content = preg_replace("#\/\*.*\*\/#iU", "", $content); 

        通过调整代码位置进行完善


        // 防止产生 <IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))"> 
        $content = preg_replace("#\/\*.*\*\/#iU", "", $content); 

        $content = preg_replace("/(on)([a-z]+)([^a-z]*)(\=)/i", "&#111;&#110;$2$3$4", $content); 
        $content = preg_replace("/(dy)(nsrc)/i", "&#100;&#121;$2", $content); 
        $content = preg_replace("/(lo)(wsrc)/i", "&#108;&#111;$2", $content); 
        $content = preg_replace("/(sc)(ript)/i", "&#115;&#99;$2", $content); 
        //$content = preg_replace("/(ex)(pression)/i", "e&#120;$2", $content); 
        $content = preg_replace("/\<(\w|\s|\?)*(xml)/i", "", $content); 

        //防止在图片代码中插入恶意代码
        $content = preg_replace("/<(img[^>]+delete\.php[^>]+bo_table[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content); 
        $content = preg_replace("/<(img[^>]+delete_comment\.php[^>]+bo_table[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content); 
        $content = preg_replace("/<(img[^>]+logout\.php[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content); 
        $content = preg_replace("/<(img[^>]+download\.php[^>]+bo_table[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content);
        
        bbs/rss.php
        修复点击论坛名称时连接地址错误的bug
        
4.34.15 (11.10.24) 
    :  [安全补丁] 可能引发SQL Injection攻击而进行修改  (packet storm -> 韩国互联网振兴协会) 

        bbs/tb.php 修改如下带吗 

            // 删除不是英文，数字及下划线的字节 (最多 20字节) 
            $bo_table = preg_replace("/\W/", "", substr($arr[1],0,20)); 
            // 正数转换 
            $wr_id = (int)$arr[2]; 
            // 删除不是英文小写，数字字节 (最多32字节) 
            $to_token = preg_replace("/[^a-z0-9]/", "", substr($arr[3],0,32)); 

        提示) 由于引用通告功能使用率极低，可能在未来的版本中不在包含引用通告功能。
        
4.34.14 (11.10.04) 
最后更新2011.10.05  09:30 在此之前下载的用户请覆盖一下文件 

主要修复可以通过回复操作可以进行XSS攻击

    :  [安全补丁] 注册新用户时通过特殊数据字段进行数据注入攻击 
    :  [安全补丁] 防止通过回复文章，阅读文章，或添加某些链接进行XSS攻击

        bbs/register_form_update.php 添加了以下代码 

            $mb_homepage = trim(strip_tags(mysql_escape_string($_POST[mb_homepage]))); 

        bbs/write_update.php 添加了以下代码  
            
            $wr_link1 = mysql_real_escape_string($_POST['wr_link1']); 
            $wr_link2 = mysql_real_escape_string($_POST['wr_link2']); 

        bbs/write.php 添加了以下代码  

            else if ($w == "u") { 
                ... 
                for ($i=1; $i<=$g4[link_count]; $i++) { 
                    $write["wr_link".$i] = get_text($write["wr_link".$i]); 
                    $link[$i] = $write["wr_link".$i]; 
                } 
                ... 
            } else if ($w == "r") { 
                ... 
                for ($i=1; $i<=$g4[link_count]; $i++) { 
                    $write["wr_link".$i] = get_text($write["wr_link".$i]); 
                } 


4.34.13 (11.10.01) 
    :  [安全补丁] 修正会员注册及会员资料修改时会出现一些非法字段的bug 

  涉及文件：bbs/register_form.php 

            $member[mb_email]      = get_text($member[mb_email]); 
            ... 省略 ... 
            $member[mb_10]          = get_text($member[mb_10]); 

        adm/member_form.php 

            $mb[mb_email]      = get_text($mb[mb_email]); 
            ... 省略 ... 
            $mb[mb_10]          = get_text($mb[mb_10]); 

        lib/common.lib.php 

            function get_sideview($mb_id, $name="", $email="", $homepage="") 添加了以下几个代码 

            $name    = get_text($name); 
            $email    = get_text($email); 
            $homepage = get_text($homepage);
4.34.12 (11.09.22) 
    :  修改新文章或新评论设置为邮件通知时部分会员不能接收的问题

        bbs/write_update.php 
        bbs/write_comment_update.php 

            仅更换了下边这行代码

            $unique_email = array_values($unique_email);
4.34.11 (11.09.20) 
    :  韩国邮编编码变更

        bbs/zip.db 
4.34.10 (11.08.10) 
    :  [安全补丁] 预防$_SERVER 通过修改变量进行 SQL Injection 攻击 
        (SK Infosec 提供) 

        bbs/visit_insert.inc.php 页面中

            $sql = " insert $g4[visit_table] ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent ) values ( '$vi_id', '$_SERVER[REMOTE_ADDR]', '$g4[time_ymd]', '$g4[time_his]', '$_SERVER[HTTP_REFERER]', '$_SERVER[HTTP_USER_AGENT]' ) "; 

            替换成以下代码

            $remote_addr = mysql_real_escape_string($_SERVER['REMOTE_ADDR']); 
            $referer    = mysql_real_escape_string($_SERVER['HTTP_REFERER']); 
            $user_agent  = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']); 
            $sql = " insert $g4[visit_table] ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent ) values ( '$vi_id', '$remote_addr', '$g4[time_ymd]', '$g4[time_his]', '$referer', '$user_agent' ) ";

4.34.09 (11.07.26) 
    :   admin.menu300.php.bak 不引用到栏目显示中 
        ( pogusm 提供 ) 


        adm/admin.lib.php 

            if (!preg_match("/^admin.menu([0-9]{3}).*\.php$/", $entry, $m))
4.34.08 (11.07.22) 
    :  在线人数管理中语言乱码的错误
    :  系统管理 > 论坛管理 > 热门关键词管理, 热门关键词顺序调整 

        lib/common.lib.php : is_utf8() 函数添加
        visit_list.php 

        adm/admin.menu300.php 
        adm/popular_list.php 
        adm/popular_rank.php
4.34.07 (11.07.01) 
    :  [安全补丁] 通过上传附件方式进行攻击方式 
        php.ini 设置中magic_quotes_gpc = Off 时才有可能被次漏洞利用 
    :  [安全补丁] CHEDITOR5 中在为允许情况下删除文件的漏洞 ( letsgolee提供 ) 

        bbs/write_update.php添加以下代码

        if (!get_magic_quotes_gpc()) { 
            $upload[$i]['source'] = addslashes($upload[$i]['source']); 
        } 


        请替换以下代码
        
        cheditor5/imageUpload/upload.php 
        cheditor5/imageUpload/delete.php 

4.34.06 (11.06.21) 
    :  [安全补丁] CHSOFT 法人提供 ( CHEDITOR 作者 ) 
        基于4.34.05版本的强化安全补丁 
        判断上传文件格式

        请替换以下三个文件 

        cheditor5/imageUpload/upload.php
        cheditor5/popup/js/image.js 
        cheditor5/popup/flash/CHXImage.swf

4.34.05 (11.06.18) 
    :  [安全补丁] CHSOFT 法人提供 ( CHEDITOR 作者 ) 
        GIF Exploit 攻击方式，通过在gif文件中注入php文件进行攻击
        CHEDITOR5 版本将可能受到攻击

        参考) 由于涉及到严重安全隐患，请尽快更新此文件

      
        替换以下文件即可

        cheditor5/imageUpload/upload.php 
        cheditor5/popup/js/image.js 


        其他安全建议) 
        data 目录中不要允许 php 或 html 文件 
        请创建下面的文件放到data根目录内 

        根目录 : .htaccess (文件名前有点) 

        创建内容 : 

        <FilesMatch "\.([Pp][Hh][Pp]|[Hh][Tt][Mm][Ll]?|[Ii][Nn][Cc]|[Cc][Gg][Ii]|[Pp][Ll])"> 
            Order allow,deny 
            Deny from all 
        </FilesMatch>


4.34.04 (11.05.27) 
    :  如果在文章复制或移动时有新的评论内容会导致评论内容会被删除的bug 
        (  http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=18926 ) 

        bbs/move_update.php 页面

        $sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_comment desc, wr_id "; 

        替换成

        $sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_is_comment, wr_comment desc, wr_id "; 


4.34.03 (11.05.17) 
    :  [安全补丁] SQL Injection 注入攻击防范补丁
    :  [安全补丁] 通过在图片Tag代码中插入下载链接，通过浏览页面即可下载文件的漏洞
        lib/common.lib.php 页面 get_sql_search() 添加 

            $field[$k] = preg_match("/^[\w\,\|]+$/", $field[$k]) ? $field[$k] : "wr_subject"; 

        lib/common.lib.php 页面 conv_content() 添加
            
            $content = preg_replace("/<(img[^>]+download\.php[^>]+bo_table[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content);

4.34.02 (11.05.16)
5月16日11点添加部分
        bbs/view_comment.php 修改部分

            添加
            
            // 以新窗口方式打开评论发表窗口时由于没有session，所以需要创建一个
            if ($is_admin && !$token) 
            { 
                set_session("ss_delete_token", $token = uniqid(time())); 
            } 


------------------------------------------------------------------------------------- 

4.34.02 (11.05.13) 
    :  [安全补丁] 防止在图片当中插入tag代码，进行数据伪造及变更。 
        (韩国国家情报安全中心[i2Sec]提供) 
    :  修改完善认证码显示代码
        (letsgolee 提供) 

        [安全补丁] 

        lib/common.lib.php 页面中 conv_content() 添加以下代码 

            $content = preg_replace("/<(img[^>]+delete\.php[^>]+bo_table[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content); 
            $content = preg_replace("/<(img[^>]+delete_comment\.php[^>]+bo_table[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content); 
            $content = preg_replace("/<(img[^>]+logout\.php[^>]+)/i", "*** CSRF 检测 : &lt;$1", $content); 

        bbs/delete.php 与 bbs/delete_comment.php 页面添加以下代码 

        if ($is_admin) 
        { 
            if (!($token && get_session("ss_delete_token") == $token)) 
                alert("认证错误！删除失败！"); 
        } 
            
        bbs/view.php 页面添加 

            if ($is_admin) 
            { 
                set_session("ss_delete_token", $token = uniqid(time())); 
                $delete_href = "javascript:del('./delete.php?bo_table=$bo_table&wr_id=$wr_id&token=$token&page=$page".urldecode($qstr)."');"; 
            } 

        bbs/view_comment.php 页面添加修改

            添加
            
            // 打开新窗口时创建session 
            if ($is_admin && !$token) 
            { 
                set_session("ss_delete_token", $token = uniqid(time())); 
            } 

            ... 

            修改

            $list[$i][del_link]  = "./delete_comment.php?bo_table=$bo_table&comment_id=$row[wr_id]&token=$token&cwin=$cwin&page=$page".$qstr; 

        [认证码变更] 

        js/jquery.kcaptcha.js 全部内容

        skin/board/basic/view_comment.skin.php 替换成如下，请使用其他skin时做参考 

            jQuery.fn.extend({...}); 删除这个部分 

            //jQuery(this).kcaptcha_load(); 使用这个代码代替
            if (comment_id && work == 'c') 
                $.kcaptcha_run();
4.34.01 (11.05.11)
:  修复游客模式下发表评论或回帖时认证码显示错误的问题 
        使用了4.33.00版本中的代码 . 
        缺点) 暂时不能更新认证码图片

        skin/board/basic/view_comment.skin.php 修改成如下代码 

        jQuery.fn.extend({ 
            kcaptcha_load: function() { 
                $.ajax({ 
                    type: 'POST', 
                    url: g4_path+'/'+g4_bbs+'/kcaptcha_session.php', 
                    cache: false, 
                    async: false, 
                    success: function(text) { 
                        $('#kcaptcha_image') 
                            .attr('src', g4_path+'/'+g4_bbs+'/kcaptcha_image.php?t=' + (new Date).getTime()) 
                            .css('cursor', '') 
                            .attr('title', ''); 
                        md5_norobot_key = text; 
                    } 
                }); 
            } 
        }); 

        function comment_box(comment_id, work) 
        { 
            ... 
            if (typeof(wrestInitialized) != 'undefined') 
                wrestInitialized(); 

            jQuery(this).kcaptcha_load();)
4.34.00 (11.04.29) 
    :  [安全补丁] 完善4.33.10～4.33.11安全补丁
此版本开始包含新版本的可视化编辑器。如果不需要请更新时不要上传覆盖以下文件。
lib/cheditor4.lib.php
cheditor5

如果使用Cheditor5 
非官方发布的Skin都要做相应修改。

修改方法：
  skin/board/skin的目录名称/write.skin.php  

            <? 
            if ($is_dhtml_editor) echo cheditor3('wr_content'); 
            ?> 

            if (document.getElementById('tx_wr_content')) { 
                if (!ed_wr_content.outputBodyText()) { 
                    alert('请输入内容'); 
                    ed_wr_content.returnFalse(); 
                    return false; 
                } 
            } 

            替换成

            if (document.getElementById('tx_wr_content')) { 
                if (!ed_wr_content.outputBodyText()) { 
                    alert('请输入内容'); 
                    ed_wr_content.returnFalse(); 
                    return false; 
                } 
            } 

            <? 
            if ($is_dhtml_editor) echo cheditor3('wr_content'); 
            ?> 

安全补丁涉及修改文件：
        bbs/register_form.php 

            /* 
            if (!($member[mb_password] == sql_password($_POST[mb_password]) && $_POST[mb_password])) 
                alert("输入的密码错误！"); 

            // 为了修改后返回临时保存
            set_session("ss_tmp_password", $_POST[mb_password]); 
            */ 

            if ($_POST['mb_password']) { 
                // 修改后返回的数据为加密数据
                if ($_POST['is_update']) 
                    $tmp_password = $_POST['mb_password']; 
                else 
                    $tmp_password = sql_password($_POST['mb_password']); 

                if ($member['mb_password'] != $tmp_password) 
                    alert("您输入的密码错误！"); 
            } 

        bbs/register_form_update.php 

            /* 删除代码
            // 加密传递密码数据
            if ($mb_password) 
                $tmp_password = sql_password($mb_password); 
            else 
                $tmp_password = get_session("ss_tmp_password"); 
            */ 

            $row  = sql_fetch(" select mb_password from $g4[member_table] where mb_id = '$member[mb_id]' "); 
            $tmp_password = $row['mb_password']; 

            ... 

            <input type='hidden' name='is_update' value='1'> 




2011-4-19
首先在此感谢所有支持Gnuboard中文版的网友，同时也在这里因未能及时更新中文版表示歉意。
由于2月1日起一直在重庆，广东，海南之间飘来飘去，没有固定地点，没有固定时间可以及时更新g4的各项数据，
仅仅在有空的时候发布了更新提示，有些对g4及php较深入的会员都根据更新提示自行更新了，但是对于新手来讲还是比较困难的。
这次刚回到重庆暂住地，把春节期间累计更新全部更新好了。建议新用户直接下载4.33.09版本。

4.33.09 (11.04.15) 
    :   以下两个漏洞是通过韩国互联网促进协会(KISA) 
        由仙林互联网高级学校1年级学生 姜仁旭（音译）提供。在此表示感谢！ 

        XSS 漏洞
        未屏蔽embed, object代码时可通过此代码进行跳板攻击 
        lib/common.lib.php 中修改了两个代码


        function conv_content($content, $html) 
            
            ... 

            //$content = preg_replace("/(ex)(pression)/i", "e&#120;$2", $content); 
            ... 
            // 防止出现此类情况 <IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))"> 
            $content = preg_replace("#\/\*.*\*\/#iU", "", $content); 

            $pattern = ""; 
            $pattern .= "(e|&#(x65|101);?)"; 
            $pattern .= "(x|&#(x78|120);?)"; 
            $pattern .= "(p|&#(x70|112);?)"; 
            $pattern .= "(r|&#(x72|114);?)"; 
            $pattern .= "(e|&#(x65|101);?)"; 
            $pattern .= "(s|&#(x73|115);?)"; 
            $pattern .= "(s|&#(x73|115);?)"; 
            $pattern .= "(i|&#(x6a|105);?)"; 
            $pattern .= "(o|&#(x6f|111);?)"; 
            $pattern .= "(n|&#(x6e|110);?)"; 
            $content = preg_replace("/".$pattern."/i", "__EXPRESSION__", $content); 


        ... 


        function bad_tag_convert($code) 
            
            ... 

            if ($is_admin && $member[mb_id] != $view[mb_id]) { 
                //$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>(\<\/(embed|object)\>)?#i", 
                // 开启embed 或 object代码时自动屏蔽危险代码 
                $code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>?(\<\/(embed|object)\>)?#i", 
                            create_function('$matches', 'return "<div class=\"embedx\">考虑安全原因，请勿使用管理员账号浏览含有代码的主题内容！</div>";'), 
                            $code); 
            } 

            //return preg_replace("/\<([\/]?)(script|iframe)([^\>]*)\>/i", "&lt;$1$2$3&gt;", $code); 
            // 开启script 或 iframe时自动屏蔽危险代码 
            return preg_replace("/\<([\/]?)(script|iframe)([^\>]*)\>?/i", "&lt;$1$2$3&gt;", $code);
4.33.08 (11.04.01) 
    :  以下两个漏洞是通过韩国互联网促进协会(KISA) 
        由仙林互联网高级学校1年级学生 姜仁旭（音译）提供。在此表示感谢！ 
    :  [安全补丁] XSS(Cross Site Scripting) 漏洞完善
        此漏洞是利用 XML的 namespace进行攻击的一种方式。 
        在论坛中不开启DHTML功能时可能会被此漏洞攻击。 
    :  [安全补丁] RFI(Remote File Inclusion) 远程上传附件攻击方式 
        通过获取管理员权限后，在论坛顶部及底部样式上传中添加恶意代码，通过利用
        Data URI scheme (http://en.wikipedia.org/wiki/Data_URI_scheme)  
        方式，在服务器创建remote文件，并利用 remote文件攻击其他服务器。 
        只有在PHP版本 5.x 以上，而且开启了 allow_url_fopen 设置为 On 的情况下才有可能发生。 
        
        lib/common.lib.php 

            $content = preg_replace("/\<(\w|\s|\?)*(xml)/i", "", $content); 

        adm/board_form.php 

            <tr class='ht'> 
                <td colspan='2'> 
                    管理员密码
                </td> 
                <td> 
                    <input class='ed' type='password' name='admin_password' itemname="管理员密码" required> 
                    <?=help("为了确保管理员账户安全，请您重新输入管理员密码");?> 
                </td> 
            </tr> 

        adm/board_form_update.php 

            if ($member[mb_password] != sql_password($_POST['admin_password'])) { 
                alert("登录密码错误！“); 
            }
            
4.33.07 (11.03.22) 
    :  通告引用地址数据表未添加导致发生部分问题
        (由于几乎不使用的功能，如果您没有相关需求可以不进行更新) 
    :  修复引用通告地址时出现乱码的问题

        bbs/write_update.php 

        if ($msg) { 
            echo "<meta http-equiv='content-type' content='text/html; charset={$g4['charset']}'>\n"; 
            echo "<script type='text/javascript'>alert('$msg $wr_trackback');</script>"; 
        }
4.33.06 (11.02.22) 
    :  [安全补丁] 拦截垃圾信息/群发广告程序完善与更新

        G4之前版本默认使用了PHPSESSID，但PHPSESSID可以通过一些途径获取 
        相关数值，以便进行在论坛群发垃圾信息。
	新版本采取新的认证方式，使客户端无法分析，同时限制5次输入，超出次数
	自动屏蔽发表功能。

        参考) 如果站内出现垃圾/广告信息请您尽可能使用会员模式运营。
	      会员必须登录后才能发表主题与评论。	
	涉及文件
        js/jquery.kcaptcha.js 
        bbs/kcaptcha_session.php 
        bbs/kcaptcha_result.php 

【提示】由于11年2月份传统节假日春节的原因，Gfans的更新未能与韩国官方同步。
期间官方更新4.33.02～4.33.05版本。4.33.06版本已经包含了期间所有的更新与补丁。
4.33.01的用户直接更新4.33.06版本即可。

4.33.02～4.33.05版本更新简要内容：

4.33.05 (11.02.20) 
    :  [安全补丁] 关于论坛内群发垃圾信息的功能更新
        
        由于出现通过判断G4随机md5数值进行垃圾信息发布软件
        更新了部分代码 
	
	涉及文件:

        js/jquery.kcaptcha.js 
        bbs/kcaptcha_session.php 
        skin/board/basic/write.skin.php 
        skin/board/basic/view_comment.skin.php 
        skin/member/basic/formmail.skin.php 
        skin/member/basic/memo_form.skin.php 
        skin/member/basic/password_lost.skin.php 
        skin/member/basic/register_form.skin.php 


        ------------------------------------------------------------------------- 
            其他) 相应Skin文件修改办法
        ------------------------------------------------------------------------- 
            
            if (typeof(f.wr_key) != 'undefined') { 
                if (hex_md5(f.wr_key.value) != md5_norobot_key) { 
                    alert('认证码输入有误，请重新输入！'); 
                    f.wr_key.select(); 
                    f.wr_key.focus(); 
                    return false; 
                } 
            } 

 		修改为：

            if (!check_kcaptcha(f.wr_key)) { 
                return false; 
            } 

   

        -------------------------------------------------------------------------

4.33.04 (11.02.12) 
	如尚未更新4.33.03版本的用户请直接更新4.33.04版本。	
    :  4.33.03 版本中更新的 common.php效果不理想，暂时返回到4.33.02版本内容
    :  4.33.03 版本中更新的 adm/member_form.php 对此版本的部分错误进行修改

        common.php 

            if (isset($sca))  { 
                $sca = mysql_real_escape_string($sca); 
                $qstr .= '&sca=' . urlencode($sca); 
            } 

            if (isset($sfl))  { 
                $sfl = mysql_real_escape_string($sfl); 
                $qstr .= '&sfl=' . urlencode($sfl); // search field (搜索字段) 
            } 

            if (isset($stx))  { // search text (关键词) 
                $stx = mysql_real_escape_string($stx); 
                $qstr .= '&stx=' . urlencode($stx); 
            } 

            if (isset($sst))  { 
                $sst = mysql_real_escape_string($sst); 
                $qstr .= '&sst=' . urlencode($sst); // search sort (搜索排列) 
            } 


        adm/member_form.php 

            <?=get_member_level_select("mb_level", 1, $member[mb_level], $mb[mb_level])?>
4.33.03 (11.02.10) 
    :  会员等级部分代码修改及优化 
    :  [Bug修复]当阅读主题需要支付积分，且浏览等级设定为1时出现的积分不能正常扣除的Bug
    :  [安全补丁] SQL INJECTION 注入攻击补丁
	涉及文件及代码
        adm/member_form.php 

            <?=get_member_level_select("mb_level", 1, $member[mb_level], $member[mb_level])?> 

        bbs/board.php 

            if (!get_session($ss_name)) 
            { 
                sql_query(" update $write_table set wr_hit = wr_hit + 1 where wr_id = '$wr_id' "); 

                // 如果是作者本人就通过
                if ($write[mb_id] && $write[mb_id] == $member[mb_id]) { 
                    ; 
                } else if ($is_guest && $board[bo_read_level] == 1 && $write[wr_ip] == $_SERVER['REMOTE_ADDR']) { 
                    // 访问者为游客，主题浏览等级设定为1且IP相同就判定为自己的文章 
                    ; 
                } else { 
                    /* 
                    // 正式会员才能阅读时 
                    if ($board[bo_read_level] > 1) { 
                        if ($member[mb_point] + $board[bo_read_point] < 0) 
                            alert("当前积分(".number_format($member[mb_point]).")不足支付浏览文章所需的积分(".number_format($board[bo_read_point]).")\\n\\n"); 

                        insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 浏览", $bo_table, $wr_id, '浏览'); 
                    } 
                    */ 
                    // 积分设定判断
                    if ($board[bo_read_point] && $member[mb_point] + $board[bo_read_point] < 0) 
                        alert("当前积分(".number_format($member[mb_point]).")不足支付浏览文章所需的积分(".number_format($board[bo_read_point]).")\\n\\n"); 

                    insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 浏览", $bo_table, $wr_id, '浏览'); 
                } 

                set_session($ss_name, TRUE); 
            } 


        common.php 
        
            if (isset($sca))  { 
                $sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca); 
                $qstr .= '&sca=' . urlencode($sca); 
            } 

            if (isset($sfl))  { 
                $sfl = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sfl); 
                $qstr .= '&sfl=' . urlencode($sfl); // search field (搜索字段) 
            } 

            if (isset($stx))  { // search text (关键词) 
                $stx = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $stx); 
                $qstr .= '&stx=' . urlencode($stx); 
            } 

            if (isset($sst))  { 
                $sst = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sst); 
                $qstr .= '&sst=' . urlencode($sst); // search sort (搜索排列) 
            }
4.33.02 (11.01.24) 
    :  [安全补丁] LFI(Local File Include ) 
        LFI 漏洞对应补丁 (SK安全小组提供) 

        common.php 
            if ($_GET['g4_path'] || $_POST['g4_path'] || $_COOKIE['g4_path']) { ... } 
            仅更改以上代码

4.33.01 (11.01.10) 
    :  [安全补丁] XSS / CSRF 攻击预防 
        更新完善4.33.00版本中中禁止object执行Flash程序
	涉及文件
        lib/common.lib.php 
        的 bad_tag_convert()修改
	已经升级过4.33.00版本的用户只需覆盖lib/common.lib.php文件即可 

4.33.00 (11.01.06) 
    :  [安全补丁] XSS / CSRF 
        利用Flash文件的 ACTION scRIPT获取管理员Session值，并共享管理员Session最终导致可以获得管理员权限的
	严重Bug! 
	请尽快安装覆盖一下文件或自行修改一下代码
        
	=== 重要 === 
        lib/common.lib.php 
             bad_tag_convert(), view_file_link() 代码修改 

        skin/board/basic/view_comment.skin.php 
	[如果已安装其他第三方skin文件请参考本文修改]
             $str = preg_replace("/\[\\]/i", "<script>doc_write(flash_movie('$1://$2.$3'));</script>", $str); 
            删除或注释以上代码
        bbs/login_check.php 
            添加ss_mb_key sesion值 
        adm/admin.lib.php 
            比较 ss_mb_key 值
      
	=== 重要文件 === 

        adm/config_form.php 
        adm/config_form_update.php 
        adm/auth_list.php 
        adm/auth_update.php 
        adm/member_form.php 
        adm/member_form_update.php 
        adm/point_list.php 
        adm/point_update.php

除修改文件以外希望所有管理员养成不用Admin帐户在站内浏览主题的习惯。
最高管理员，默认admin帐号仅用来后台管理。管理员浏览站内文章时用普通帐号即可避免此类攻击方法。

4.32.15 (10.12.28) 
    :  [安全补丁] $write_table 变量初始化 

    涉及文件    common.php 

只需修改添加以下部分即可

$write_table = ""; 


建议：
删除data目录中的php,htm,html文件，
在linux下可以使用以下命令搜索
find -name '*.php' -o -name '*.htm' -o -name '*.html' 

默认包含的index.php也可以删除

汉化遗漏的汉化图片及文件  （感谢会员枫提交bug）
skin/board/basic/img/co_btn_good_write2.gif 
cheditor4/icons/submit.gif 

4.32.14 (10.12.07) 
    :  修改开启新内容邮件通知功能部分代码
    :  修改会员积分为负数时发表评论出现的bug 
    :  修改4.32.13版本中后台管理员等级显示1～100级，修改为1～10级
    :  修改Cheditor.js中部分笔误

        bbs/write_update.php 
        bbs/write_comment_update.php 
4.32.13修正版 (2010.11.13)修正内容：
仅仅修改中文版发行时的错别字及部分汉化过程中出现的问题，所以不修改版本号，仅增加修正版

 1.  2010-11-13 01：00前下载的用户请重新下载或覆盖cheditor.js文件 【修正汉化遗漏部分】\gnuboard4.utf8_chn\cheditor4\cheditor.js
 2.  未开启详细地址输入时出现数据错误 无法错误问题  \gnuboard4.utf8_chn\bbs\register_form_update.php
 3.  修正默认登录模板在部分海外虚拟主机出现乱码的问题
 4.  强制设置utf8_general_ci编码格式【mysql编码格式未设置utf8_general_ci时出现乱码，修改后强制设置utf8_general_ci编码格式】 


4.32.13 （2010.11.02）
    :  [安全补丁] 当天上午发布的.13版本更新是疏漏代码导致出现可以修改别人发表的评论的漏洞 11月2日中午前下载的用户请及时覆盖文件 
        bbs/write_update.php 
  
------------------------------------------------------------------------------------------ 
    :  [安全补丁] 必须使用加密内容的论坛板块内，禁止发表主题后通过修改方式将加密状态解除。（管理员除外） 
    :  [安全补丁] 可以修改别人文章的漏洞
    :  修改注册会员及修改信息是公开信息部分的介绍文字

        bbs/write_update.php 
        skin/member/basic/register_form.skin.php
4.32.12 (10.10.21)
    :   [安全补丁] 为了屏蔽最近有很多通过站内短信发送广告的行为
    :   短信传送方式修改为post
    :   发送短信时需输入认证码

        bbs/memo_form_update.php
        skin/member/basic/memo_form.skin.php

4.32.11 (10.09.11)
    :   [安全补丁] 严重漏洞
        自动登录功能缺陷

        common.php 修改以下内容

        if ($tmp_mb_id = get_cookie("ck_mb_id"))
        {
            $tmp_mb_id = substr(preg_replace("/[^a-zA-Z0-9_]*/", "", $tmp_mb_id), 0, 20);
            // 禁止最高管理员设置自动登录
            if ($tmp_mb_id != $config['cf_admin'])
            {
                $sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g4['member_table']} where mb_id = '{$tmp_mb_id}' ";

        common.php

4.32.10 (10.09.07)
    :   完善ID/密码查询功能
        之前使用的 password_forget 不再使用，替代为 password_lost 
        注册会员时不再输入忘记密码提问及答案
    
        bbs/password_lost.php
        bbs/password_lost2.php
        bbs/password_lost_certify.php
        skin/member/basic/password_lost.skin.php
        skin/member/basic/register_form.skin.php
        skin/member/basic/login.skin.php            : win_password_forget() -> win_password_lost() 代替
        skin/outlogin/basic/outlogin.skin.1.php     : win_password_forget() -> win_password_lost() 代替
        js/common.js                                : function win_password_lost() 添加

        // 更新此次更新后请删除以下文件
        bbs/password_forget.php
        bbs/password_forget2.php
        bbs/password_forget3.php

4.32.09 (10.09.07)
    :   允许论坛内搜索\符号
    
        lib/common.lib.php                          : $search_text = trim(stripslashes($search_text)); 代替
        skin/board/basic/list.skin.php              : value='<?=stripslashes($stx)?>' 代替

4.32.08 (10.08.25)
    :   url_auto_link() 完善
    
        lib/common.lib.php 

4.32.07 (10.08.23)
    :   [安全补丁] 完善XSS(Cross Site Scripting) 攻击防御
    :   修正会员积分低于0时在设定发帖需要积分的论坛发贴时出现的错误
    :   会员注册时条款内容checkbox更改为radio  (韩国信产部建议)
    :   更改会员生日选择方式为jquery datepicker

        common.php
        bbs/write.php
        skin/member/basic/register.skin.php
        skin/member/basic/register_form.skin.php

2005-5～2010年10前版本更新简要请参考Sir.co.kr官方网站信息。