安全补丁包说明: 图片:2.png 图片:01.png
安全级别:高~ 75以上版本必须打补丁!
更新内容:修复8.0版本以及7.5版本(含正式版,sp1,sp2,sp3以及sp3优化包),中存在的安全问题。
安全补丁包下载地址:http://www.phpwind.net/read-htm-tid-1081860.html
准备工作:
1)打补丁之前,建议先将站点关闭,并做好备份以备万一;
2)我们提供了两种不同的方法供同学们参考,请根据实际情况选择适合的方法。
3)方法二请参考对应文件夹下的readme.txt进行修改,本帖方法二为phpwind 8 手动修改方案举例。
方法一:覆盖文件
首先:下载站点对应的安全补丁包
1)下载站点对应的安全补丁包:本次提供了如下几种安全补丁包:具体参考noizy发布的帖子--phpwind 7.5~8.0安全补丁[重要!更新时间20100906]
其中,safe_75plus_gbk_20100906.zip命名的包为phpwind 7.5 sp3优化包的安全补丁包,请同学下载自己站点对应程序的安全补丁包。
2)每个安全补丁包下有三种不同的编码: GBK 简体中文版、繁体中文版BIG5、UTF-8中文版。请根据您所需的编码,选择相应版本的论坛程序下载。
以下演示修补phpwind 8正式版gbk编码形式为例,供童鞋们参考:
第一步:下载phpwind 8 对应安全补丁包,找到对应编码的安全补丁包,解压为后得到两个文件:upload文件夹、readme.txt说明文档,进入upload文件夹,得到如下文件:
第二步:找到站点根目录,上传upload文件夹下的四个文件到站点根目录下,以覆盖原站点程序。如下:
第三步:补丁更新完成。
至此,您的站点安全补丁包已经打好了,重新运行你的站点。
本帖例举phpwind 8 readme.txt 方法进行手动修改
其它版本请参考对应文件夹下的readme.txt说明进行修补
1.打开:admin/setforum.php
查找:
修改为:
- $db_uploadfiletype = !empty($db_uploadfiletype) ? (is_array($db_uploadfiletype) ? $db_uploadfiletype : unserialize($db_uploadfiletype)) : array();
2.8.0 无需修改pw_ajax.php
- $db_uploadfiletype = array(
- 'gif' => 2048, 'jpg' => 2048,
- 'jpeg' => 2048, 'bmp' => 2048,
- 'png' => 2048
- );
3.打开:actions\ajax\pcdelimg.php
替换整个文件内容为:
- <?php
- !defined('P_W') && exit('Forbidden');
- InitGP(array(
- 'pctype'
- ));
- InitGP(array(
- 'fieldid',
- 'tid',
- 'id'
- ), GP, 2);
- if (!$tid || !$id || !$fieldid || !$pctype) {
- echo 'fail';ajax_footer();
- }
- if ($pctype == 'topic') {
- $tablename = GetTopcitable($id);
- } elseif ($pctype == 'postcate') {
- $tablename = GetPcatetable($id);
- }
- $fieldname = $db->get_value("SELECT fieldname FROM pw_pcfield WHERE fieldid=".pwEscape($fieldid));
- if (!$tablename || !$fieldname) {
- echo 'fail';ajax_footer();
- }
- $path = $db->get_value("SELECT $fieldname FROM $tablename WHERE tid=" . pwEscape($tid));
- if (strpos($path, '..') !== false) {
- echo 'fail';ajax_footer();
- }
- $lastpos = strrpos($path, '/') + 1;
- $s_path = substr($path, 0, $lastpos) . 's_' . substr($path, $lastpos);
- if (!file_exists("$attachpath/$path")) {
- if (pwFtpNew($ftp, $db_ifftp)) {
- $ftp->delete($path);
- $ftp->delete($s_path);
- pwFtpClose($ftp);
- }
- } else {
- P_unlink("$attachdir/$path");
- if (file_exists("$attachdir/$s_path")) {
- P_unlink("$attachdir/$s_path");
- }
- }
- $db->update("UPDATE $tablename SET $fieldname='' WHERE tid=" . pwEscape($tid));
- echo 'success';
- ajax_footer();
4.打开:apps\activity\action\my.php
查找:
修改为:
- if ($otherpartyname) {
- $where .= " AND (log.username LIKE ".pwEscape('%'.$otherpartyname.'%').
- " OR author LIKE ".pwEscape('%'.$otherpartyname.'%').
- " OR log.fromusername LIKE " . pwEscape('%' . $otherpartyname . '%') .
- ") AND '" . $otherpartyname . "'!='" . $windid . "'";
- $pageUrl .= 'otherpartyname='.$otherpartyname.'&';
- }