【发布时间】:2023-03-15 19:47:01
【问题描述】:
我们让用户从单个文本输入中搜索数据库,我在过滤某些用户提供的字符串时遇到了困难。
例如,如果用户提交:
��������� lcd SONY
(注意?)我需要取消搜索。
我将上述字符串的 base64 编码版本包含在内,以便轻松运行:
print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));
我之前忽略了这样的输入,但现在(不知道为什么)刚刚意识到 mysql 数据库查询几乎要永远执行,所以现在这是高优先级。
另一个强调我们正在使用 utf-8 和 mb_detect_encoding 的示例没有多大帮助:
print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
ΠΛυντηριο ρουχ�%
所以:
- 如何检测/过滤这些输入?
- 这个输入是如何生成的?
【问题讨论】:
-
拒绝这些输入是错误的做法。您首先需要弄清楚为什么它们会对性能产生不利影响。
-
这是第一道防线。我现在被困住了,所以我现在要调查数据库性能问题,直到我有一个好主意。
-
您是说用户实际上是在手动输入替换字符吗? fileformat.info/info/unicode/char/FFFD/index.htm
-
我不知道“替换字符”是什么。这是否出现在我作为示例提供的字符串中?
-
是的 - 您是否点击了我评论中的链接?该字符通常只能由软件插入,而不是用户自己插入。
标签: php unicode filter validation detect