Discuz! System Error 您当前的访问请求当中含有非法字符,已经被系统拒绝错误解决

Discuz! X3.1 正式版含目前最新版[2014-03-01]在用户退出时偶尔会提示如下错误,特别是数据整合后的站点:

错误代码:

Discuz! System Error
您当前的访问请求当中含有非法字符,已经被系统拒绝
PHP Debug
[Line: 0022]search.php(discuz_application->init)
[Line: 0071]source\class\discuz\discuz_application.php(discuz_application->_init_misc)
[Line: 0552]source\class\discuz\discuz_application.php(discuz_application->_xss_check)
[Line: 0355]source\class\discuz\discuz_application.php(system_error)
[Line: 0017]source\function\function_core.php(discuz_error::system_error)
[Line: 0024]source\class\discuz\discuz_error.php(discuz_error::debug_backtrace)



临时解决方法:
修改 \source\class\discuz下的discuz_application.php文件大约第350行的private function _xss_check()方法:

  1. private function _xss_check() {  
  2.   
  3. static $check = array('"''>''<''\'''('')''CONTENT-TRANSFER-ENCODING');  
  4.   
  5. if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {  
  6. system_error('request_tainting');  
  7. }  
  8.   
  9. if($_SERVER['REQUEST_METHOD'] == 'GET' ) {  
  10. $temp = $_SERVER['REQUEST_URI'];  
  11. elseif(emptyempty ($_GET['formhash'])) {  
  12. $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');  
  13. else {  
  14. $temp = '';  
  15. }  
  16.   
  17. if(!emptyempty($temp)) {  
  18. $temp = strtoupper(urldecode(urldecode($temp)));  
  19. foreach ($check as $str) {  
  20. if(strpos($temp$str) !== false) {  
  21. system_error('request_tainting');  
  22. }  
  23. }  
  24. }  
  25.   
  26. return true;  
  27. }  




  1. private function _xss_check() {  
  2. $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));  
  3. if(strpos($temp'<') !== false || strpos($temp'"') !== false || strpos($temp'CONTENT-TRANSFER-ENCODING') !== false) {  
  4. system_error('request_tainting');  
  5. }  
  6. return true;  
  7. }  

本文最后更新于 2014-03-31 23:38:07 并被添加「discuz discuzx2 discuzx3」标签,已有 15784 位童鞋阅读过。
本文作者:未来往事
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处

相关文章

此处评论已关闭