AspCMS 的审核审核元素,说白了就是元素一套过滤机制。你后台提交的审核内容,不管是元素文章、评论还是审核自定义表单,在入库前都要过这道关。元素很多人以为审核就是审核简单的“敏感词替换”,真去翻源码会发现,元素它分了好几层,审核每层干的元素事不一样。
先说最外层的审核
CheckBadWord函数。这玩意儿在inc/AspCms_Common.asp里,元素逻辑粗暴:把用户提交的审核字符串跟数据库里badword表的内容逐个比对。匹配上了就替换成你后台设置的元素“替代字符”,默认是审核***。我见过一个站点,管理员把“杀”字加进了敏感词库,结果用户写“杀毒软件”全变成了“***毒软件”,哭笑不得。这层过滤不区分上下文,纯粹字符串匹配,效率高但容易误伤。再往里走是 HTML 标签过滤。AspCMS 默认允许一部分标签,比如
<p>、<br>、<img>,但<script>、<iframe>这些直接干掉。实现方式在inc/AspCms_Editor.asp里,用正则把危险标签整段删掉。注意,是删掉,不是转义。这意味着你写<script>alert(1)</script>,提交后连标签带内容全没了,页面上只剩空白。有些老版本存在绕过漏洞,比如用<scr