男的舔女的下面视频在线播放-少妇愉情理仑片高潮日本-久久久久久国产一区二区三区-麻豆精品一区二区综合-国产精品超碰在线观看-网红极品女神精品视频在线-国产亚洲综合777-高清性视频一区二区播放-中文字幕第一页亚洲天堂

Discuz! 官方交流社區(qū)

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

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

出現(xiàn)這樣的錯誤主要是因?yàn)镈iscuz!系統(tǒng)的_xss_check()函數(shù)原本的意義是為了論壇安全,防止XSS攻擊,一般網(wǎng)站使用是不會出現(xiàn)什么問題的,但是有些網(wǎng)站要接入第三方接口,當(dāng)?shù)谌浇涌谙虮菊緋ost數(shù)據(jù)的時候就會報”您當(dāng)前的訪問請求當(dāng)中含有非法字符,已經(jīng)被系統(tǒng)拒絕”,本文介紹一種簡單的修改方法避免此錯誤。

解決方案如下:

\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. }
復(fù)制代碼


替換為:

  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. }
復(fù)制代碼


更新緩存

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

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

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

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

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

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

官網(wǎng)下的?好用嗎?





歡迎光臨 Discuz! 官方交流社區(qū) (http://m.sdtechgong.com.cn/) Powered by Discuz! X5.0