Php 如果不是所有数据都是英文,我可以过滤输入吗?

Php 如果不是所有数据都是英文,我可以过滤输入吗?,php,Php,现在我的应用程序是针对SQL注入和XSS进行保护的,在部署之前将添加CSRF保护。我没有过滤POST请求思想,也没有使用任何GET请求 我读这个问题是想看看我是否漏掉了任何一个问题,有人说要用 $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING); 问题是我的数据来自不同的语言,英语、法语、阿拉伯语、俄语,我不知道是什么。我不知道做数据输入的人想在数据库中输入什么。我知道将会有来自许多不同语言的数据 输

现在我的应用程序是针对SQL注入和XSS进行保护的,在部署之前将添加CSRF保护。我没有过滤POST请求思想,也没有使用任何GET请求

我读这个问题是想看看我是否漏掉了任何一个问题,有人说要用

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
问题是我的数据来自不同的语言,英语、法语、阿拉伯语、俄语,我不知道是什么。我不知道做数据输入的人想在数据库中输入什么。我知道将会有来自许多不同语言的数据

输入过滤和消毒对没有英文字符不起作用,对吗

根据

过滤器\u清理\u字符串过滤器会去除或编码不需要的内容 人物

此筛选器将删除对您的系统可能有害的数据 应用它用于剥离标签,删除或编码不需要的标签 人物


非英语字符只需编码,不应删除。您应该确保在PHP和MySQL中使用UTF-8$username=filter\u var($var,filter\u SANITIZE\u STRING)输出:
“èùß某物”
。通用无上下文“消毒”的总体概念让我不寒而栗。PHP将伟大的功能与历史垃圾结合在一起,我认为这更接近第二种情况。@阿尔瓦罗冈萨雷斯你不认为过滤帖子并对其进行消毒是个好主意吗?我只是问,我这么做的唯一原因是因为他们在另一篇帖子里这么说。如果没什么区别的话,我就不会在这上面浪费时间了it@Lynob在没有特定上下文的情况下,以“批处理”模式进行操作不是一个好主意。例如,
FILTER\u SANITIZE\u STRING
显示以删除HTML标记。这是一个很好的方法,例如破坏密码,其中HTML是最不需要关心的。在您的情况下,限制用户名中使用的字符是有意义的,但这是PHP无法自动为您做到的,因为它不知道您的要求。字节序列如何会损害我的应用程序?PHP根本不知道我打算用字符串做什么。这并不是说文本可能包含腐蚀性物质或其他东西……我同意,更好的净化数据的方法是了解您的期望值,并在此基础上进行限制。泛型过滤可以给你一种安全感,但在有人有恶意意图的时候,至少有一半的时间会被滥用