升级到最新后,存在这个问题,造成原因可能是“formhash”导致。
因为用户退出后,此时用户的信息已经清空,所以当用户点击“清除痕迹”时会报附件中的错。
对于目前我的一个解决方法是在“清除痕迹”时不再再次验证“formhash”这个值。
修改文件如下语言包:【source/language/lang_message.php】
- 226行和227行修改如下
- 'logout_succeed' => '您已退出站点,现在将以游客身份转入退出前页面,请稍候…… <br /><a href="member.php?mod=clearcookies&referer={referer}">[ 清除痕迹 ]</a> {ucsynlogout} ',
- 'location_logout_succeed_mobile' => '您已退出站点,现在将以游客身份转入退出前页面,请稍候…… <br /><a href="member.php?mod=clearcookies&referer={referer}">[ 清除痕迹 ]</a>',
-
复制代码 删除【&formhash={formhash}】参数即可。
- private function _xss_check() {
- static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');
- if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
- system_error('request_tainting');
- }
- if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
- $temp = $_SERVER['REQUEST_URI'];
- } elseif(empty ($_GET['formhash'])) {
- $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
- } else {
- $temp = '';
- }
- if(!empty($temp)) {
- $temp = strtoupper(urldecode(urldecode($temp)));
- foreach ($check as $str) {
- if(strpos($temp, $str) !== false) {
- system_error('request_tainting');
- }
- }
- }
- return true;
- }
复制代码
|