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

返回列表 發帖
查看: 4530|回復: 4

采集器:“您當前的訪問請求當中含有非法字符"解決方案!

83

主題

2786

回帖

3569

積分

功行圓滿

貢獻
23 點
金幣
351 個
樓主
發表于 2021-4-14 00:18:03 | 只看樓主 |倒序瀏覽 |閱讀模式
關于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. }
復制代碼


更新緩存
回復

使用道具 舉報

10

主題

45

回帖

58

積分

漸入佳境

貢獻
0 點
金幣
0 個
QQ
沙發
發表于 2022-6-12 20:59:41 | 只看Ta
本帖最后由 永遠是第一次 于 2022-6-12 21:10 編輯

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

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

使用道具 舉報

83

主題

2786

回帖

3569

積分

功行圓滿

貢獻
23 點
金幣
351 個
板凳
 樓主| 發表于 2022-6-12 21:35:48 | 只看Ta
永遠是第一次 發表于 2022-6-12 11:59
我的采集,里面的代碼都被我替換掉了,依然發布會有:“您當前的訪問請求當中含有非法字符",這是為什么? ...

清空瀏覽器緩存或更換瀏覽器后再看看
回復

使用道具 舉報

10

主題

45

回帖

58

積分

漸入佳境

貢獻
0 點
金幣
0 個
QQ
地板
發表于 2022-6-12 21:43:27 | 只看Ta
allthebest 發表于 2022-6-12 21:35
清空瀏覽器緩存或更換瀏覽器后再看看

我用的火車頭采集器!
回復

使用道具 舉報

2

主題

93

回帖

121

積分

漸入佳境

貢獻
0 點
金幣
14 個
5#
發表于 2022-6-15 09:09:58 | 只看Ta
永遠是第一次 發表于 2022-6-12 21:43
我用的火車頭采集器!

官網下的?好用嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-7-1 18:22 , Processed in 0.056100 second(s), 11 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表