用于过滤常用文本字段的PHP本机函数
是否有一个本机PHP函数用于拒绝来自简单文本字段的无效$u POST数据 目前,我正在使用带有正则表达式的自定义筛选函数,如果可能的话,我真的很想简化我的代码 例如,假设我有一个表单字段,用于输入姓氏。我希望检查提交的值,如果输入包含任何无效字符,则立即拒绝输入 以下是我考虑PHP函数的标准:用于过滤常用文本字段的PHP本机函数,php,security,input,filtering,Php,Security,Input,Filtering,是否有一个本机PHP函数用于拒绝来自简单文本字段的无效$u POST数据 目前,我正在使用带有正则表达式的自定义筛选函数,如果可能的话,我真的很想简化我的代码 例如,假设我有一个表单字段,用于输入姓氏。我希望检查提交的值,如果输入包含任何无效字符,则立即拒绝输入 以下是我考虑PHP函数的标准: 一个人的姓可能是“Smith Johnson”、“Van Buren”、“O'Malley”等,因此函数需要允许空格、连字符、撇号等 我的目标是测试输入并立即拒绝它,而不是对其进行消毒并通过附加的过滤器
- 一个人的姓可能是“Smith Johnson”、“Van Buren”、“O'Malley”等,因此函数需要允许空格、连字符、撇号等
- 我的目标是测试输入并立即拒绝它,而不是对其进行消毒并通过附加的过滤器和处理步骤来运行它
- 我想捕捉的两个输入示例是:
username' -- username; DELETE FROM users;
**只是好奇:PECL是否使filter_input()比strip_tags()更快?我总是使用正则表达式来验证表单输入。如果您感兴趣,我有一整套表单验证和创建功能,这些功能是我多年来开发的。没有这样的功能。你问的基本上是如何区分一个字符串和另一个字符串,而它们都是具有复杂条件的字符串。对于“本机”函数来说,这是一个相当模糊的任务 实现这一点最“自然”的方法是使用正则表达式,而这正是您已经在做的事情
这也违反了意识形态,因为$\u POST和$\u GET应该以原始形式表示参数,而不是在通过一些验证之后。使用PDO和占位符来正确防止SQL注入。对于XSS注入,我倾向于使用htmlentities,除非我想支持一些HTML标记。在这种情况下,我使用HTML解析器创建了一个允许标记的过滤器。使用正确的编码,一切都很好。谢谢-我同意这两个最佳实践,并将它们应用到我的代码中。我感兴趣的是在准备查询或输出之前拒绝输入。