97久久国产亚洲精品超碰热,成人又色又爽的免费网站,色偷偷女人的天堂a,男女高潮喷水在线观看,国内精品一线二线三线区别在哪里

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)這樣的錯誤主要是因為Discuz!系統(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://r615.cn/) Powered by Discuz! X5.0