Discuz! 出现“您当前的访问请求当中含有非法字符“解决方法
Discuz! 出现“您当前的访问请求当中含有非法字符“解决方法-一般是在未登录下使用首页搜索功能出现<br />解决方案如下:<br /><br /><br />\source\class\discuz的discuz_application.php<br />查找<br /> <ol><li>private function _xss_check() {<br /><li><br /><li> static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');<br /><li><br /><li> if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {<br /><li> system_error('request_tainting');<br /><li> }<br /><li><br /><li> if($_SERVER['REQUEST_METHOD'] == 'GET' ) {<br /><li> $temp = $_SERVER['REQUEST_URI'];<br /><li> } elseif(empty ($_GET['formhash'])) {<br /><li> $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');<br /><li> } else {<br /><li> $temp = '';<br /><li> }<br /><li><br /><li> if(!empty($temp)) {<br /><li> $temp = strtoupper(urldecode(urldecode($temp)));<br /><li> foreach ($check as $str) {<br /><li> if(strpos($temp, $str) !== false) {<br /><li> system_error('request_tainting');<br /><li> }<br /><li> }<br /><li> }<br /><li><br /><li> return true;<br /><li> }</ol><br /><br /><br />替换为:<br /> <ol><li> private function _xss_check() {<br /><li> $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));<br /><li> if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {<br /><li> system_error('request_tainting');<br /><li> }<br /><li> return true;<br /><li> }</ol><br /><br /><br />上传覆盖同名文件,后台更新缓存,重新登录退出看看是否解决了。(<font color="Red">特别提醒:这个改变可能降低跨站攻击防护等级,所以非追求极致用户体验时慎用哦</font>)出现<em>, </em>Discuz<em>, </em>当前<em>, </em>访问<em>, </em>请求 不用这么麻烦的吧,好像直接修改config文件就可以 <br />确实不用那么麻烦 只是你关闭了 xxs防护而已哦 <br />怎么改呢 <br />config/config_global.php<br /><ol><li>$_config['security']['urlxssdefend'] = 0;</ol> 我不建议让游客使用首页搜索功能<br /><br />这对增加注册会员没半点作用的说<br /> <br />好的,我试试,谢谢啦 感谢分享。。 <br />这个可以有。 收藏了,备用。谢谢!
頁:
[1]