这几天看到很多人问discuz uc.key 泄露导致代码注入漏洞uc.php的解决方法,也看了最近大家提供的一些解决方案,对比文件后发现最新版本的uc.php已经修复了大家说的问题,但阿里云一样有相关的提示,下面提供下相关的修改说明,大家可以试试看
首先找到这个文件/api/uc.php
第一处修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
if (!API_UPDATEBADWORDS) { return API_RETURN_FORBIDDEN; } $data = array (); if ( is_array ( $post )) { foreach ( $post as $k => $v ) { //dz uc-key修改开始 if ( substr ( $v [ 'findpattern' ], 0, 1) != '/' || substr ( $v [ 'findpattern' ], -3) != '/is' ) { $v [ 'findpattern' ] = '/' . preg_quote( $v [ 'findpattern' ], '/' ) . '/is' ; } //end 修改结束 $data [ 'findpattern' ][ $k ] = $v [ 'findpattern' ]; $data [ 'replace' ][ $k ] = $v [ 'replacement' ]; } } |
第二处修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function updateapps( $get , $post ) { global $_G ; if (!API_UPDATEAPPS) { return API_RETURN_FORBIDDEN; } //$UC_API = $post['UC_API']; //dz uc-key修改开始 $UC_API = '' ; if ( $post [ 'UC_API' ]) { $UC_API = str_replace ( array ( '\'' , '"' , '\\' , "\0 ", " \n ", " \r"), '' , $post [ 'UC_API' ]); unset( $post [ 'UC_API' ]); } //end修改结束 $cachefile = DISCUZ_ROOT. './uc_client/data/cache/apps.php' ; |
第三处修改
1
|
$configfile = preg_replace |
改成
1
|
$configfile = preg_replace( "/define\('UC_API',\s*'.*?'\);/i" , "define('UC_API', |