PHP敏感词过滤:如何拦截含特殊字符的规避行为?
解决方案:检测特殊字符并抛出错误提示
当然可以实现这个需求!针对你遇到的用户用特殊字符拆分敏感词绕过过滤的问题,我们可以轻松实现检测逻辑——不管是检查用户输入内容,还是校验敏感词数组里的项是否包含指定特殊字符,都能做到并抛出明确的错误提示。下面我用JavaScript示例来演示(你可以轻松适配到Python、Java等其他语言):
1. 定义需要检测的特殊字符集合
首先明确要拦截的特殊字符范围,你可以根据实际需求调整这个列表:
// 你要检测的特殊字符集合 const forbiddenChars = ['.', ',', '?', '!', '*', '#'];
2. 编写通用检测函数
写一个可复用的函数,用来判断任意字符串是否包含上述禁止字符:
// 方法1:用数组some方法检测(直观易懂) function containsForbiddenChars(str) { return forbiddenChars.some(char => str.includes(char)); } // 方法2:用正则表达式检测(处理长字符串效率更高) function containsForbiddenCharsRegex(str) { // 注意转义正则特殊字符,这里我们的集合里没有需要转义的,直接拼接即可 const regexPattern = `[${forbiddenChars.join('')}]`; return new RegExp(regexPattern).test(str); }
3. 集成到你的业务逻辑中
场景A:检测用户输入内容是否包含特殊字符
把检测逻辑加到用户输入校验流程里,一旦发现特殊字符就抛出错误:
// 你的敏感词过滤数组 const badWordFilter = ['敏感词1', '敏感词2', '敏感词3']; function validateUserInput(userInput) { // 第一步:检查用户输入是否含禁止的特殊字符 if (containsForbiddenChars(userInput)) { throw new Error('输入内容包含禁止使用的特殊字符(如点、逗号、感叹号等),请移除后重试!'); } // 第二步:原有敏感词检测逻辑(保留你原来的过滤规则) const hasBadWord = badWordFilter.some(word => userInput.includes(word)); if (hasBadWord) { throw new Error('输入内容包含敏感词,请修改后重试!'); } // 校验通过 return true; } // 使用示例 try { validateUserInput('这是测,试内容'); // 包含逗号,触发错误 } catch (error) { console.error(error.message); // 输出:输入内容包含禁止使用的特殊字符(如点、逗号、感叹号等),请移除后重试! }
场景B:检测敏感词数组是否存在带特殊字符的项
如果你需要确保自己维护的敏感词数组里没有特殊字符(避免误判),也可以用同样的函数校验:
function validateBadWordFilter() { const invalidWords = badWordFilter.filter(word => containsForbiddenChars(word)); if (invalidWords.length > 0) { throw new Error(`敏感词数组中存在包含特殊字符的项:${invalidWords.join(', ')},请修正后再使用!`); } } // 使用示例 try { validateBadWordFilter(); } catch (error) { console.error(error.message); }
补充优化建议(可选)
如果想进一步防止用户用特殊字符拆分敏感词绕过,还可以先移除用户输入里的特殊字符,再做敏感词检测:
function sanitizeInput(str) { // 移除所有禁止的特殊字符 return str.replace(new RegExp(`[${forbiddenChars.join('')}]`, 'g'), ''); } // 修改敏感词检测逻辑 const sanitizedInput = sanitizeInput(userInput); const hasBadWord = badWordFilter.some(word => sanitizedInput.includes(word));
内容的提问来源于stack exchange,提问作者labu77
相关产品推荐
相关产品推荐

