找回密码
 立即注册
搜索
查看: 249|回复: 0

discuz在搜索框输入特殊字符报错

[复制链接]
  • TA的每日心情
    擦汗
    2025-4-27 17:59
  • 签到天数: 294 天

    [LV.8]

    1142

    主题

    256

    回帖

    1142

    积分

    管理员

    贡献
    98320
    金币
    7727

    马山东

    发表于 2024-4-10 16:34 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    关于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. }
    复制代码


    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关于本站|Archiver|手机版|小黑屋|ud3的个人空间 ( 鲁ICP备10201653号|鲁公网安备 37070502000015号 )|网站地图

    GMT+8, 2025-5-3 12:43 , Processed in 0.042870 second(s), 35 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表