久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

Discuz! 官方交流社區

標題: 采集器:“您當前的訪問請求當中含有非法字符"解決方案! [打印本頁]

作者: allthebest    時間: 2021-4-14 00:18
標題: 采集器:“您當前的訪問請求當中含有非法字符"解決方案!
關于Discuz!中“您當前的訪問請求當中含有非法字符,已經被系統拒絕”的問題,在添加或更新文章的時候經常出現,經測試發現出現這種情況更多的在使用工具(如火車頭采集器)批量發布文章時出現,仔細分析發現,當發布的正文內容出現特殊符號(&,/,<,>等)時出現這樣的錯誤提示。

出現這樣的錯誤主要是因為Discuz!系統的_xss_check()函數原本的意義是為了論壇安全,防止XSS攻擊,一般網站使用是不會出現什么問題的,但是有些網站要接入第三方接口,當第三方接口向本站post數據的時候就會報”您當前的訪問請求當中含有非法字符,已經被系統拒絕”,本文介紹一種簡單的修改方法避免此錯誤。

解決方案如下:

\source\class\discuz的discuz_application.php

查找如下代碼(在360行左右),并替換

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


替換為:

  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. }
復制代碼


更新緩存

作者: 永遠是第一次    時間: 2022-6-12 20:59
本帖最后由 永遠是第一次 于 2022-6-12 21:10 編輯

我的采集,里面的代碼都被我替換掉了,依然發布會有:“您當前的訪問請求當中含有非法字符",這是為什么?

按照你的修改后,發布直接顯示:返回的Header:錯誤

作者: allthebest    時間: 2022-6-12 21:35
永遠是第一次 發表于 2022-6-12 11:59
我的采集,里面的代碼都被我替換掉了,依然發布會有:“您當前的訪問請求當中含有非法字符",這是為什么? ...

清空瀏覽器緩存或更換瀏覽器后再看看
作者: 永遠是第一次    時間: 2022-6-12 21:43
allthebest 發表于 2022-6-12 21:35
清空瀏覽器緩存或更換瀏覽器后再看看

我用的火車頭采集器!
作者: neol    時間: 2022-6-15 09:09
永遠是第一次 發表于 2022-6-12 21:43
我用的火車頭采集器!

官網下的?好用嗎?





歡迎光臨 Discuz! 官方交流社區 (http://www.9999xn.com/) Powered by Discuz! W1.0