这里是普通文章模块栏目内容页
织梦dedecms后台添加缩略图地址flink变成fli<x>nk的解决方法
在使用dedecms 友情链接插件时发现上传图片在后端列表显示不出来,审查元素才发现,好好的flink被替换为 fli<x>nk ,



于是查看项目源代码,发现在/include/datalistcp.class.php 文件中有一个函数RemoveXss() 该函数主要用于 去除XSS恶意代码,官方解释为:
RemoveXSS
(>=DedeCMS 5.5)
函数名:RemoveXSS
功能:去除XSS恶意代码
参数:
$val='' 需要格式化的内容
返回值:
格式化后的字符串
范例:
{field:keywords function=RemoveXSS(@me)'/}

在一组目标数组中我们果然发现了  “link”,如果找到这个词组 则执行:
$replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
方法一:最简单的方法是不做“去除”处理,将$replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); 替换为 $replacement = substr($ra[$i], 0, 2).substr($ra[$i], 2);  但是此种方式会导致整个去除函数没有意义。
方法二:只对 link 关键词组特殊处理,将$ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style',   替换为 $ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'style',  即去除 link 元素。
方法三:在查找到为去除xxs恶意代码时,再判断标志是否为 link 是的则不做去除操作。
将 $val = preg_replace($pattern, $replacement, $val); 替换为

// 如果关键词为'link' 则不去除

if($ra[$i] !== 'link')
$val = preg_replace($pattern, $replacement, $val);