自由文本字段的输入验证

时间:2018-08-25 20:12:57

标签: php html validation security htmlspecialchars

我在PHP中搜索了很多有关表单验证的内容。不幸的是,所有有关验证机制的教程都是关于特定字段的,例如名称,邮件或日期。使用正则表达式可以很容易地检查这些字段中的用户输入是否正确。但是,检查联系我们的文本eareara或评论字段等自由字段的最佳方法是什么?特别是在评论字段中,用户还应该使用“ <”,““>”或“'”之类的“危险”字符。

处理用户输入的最佳方法是什么?从逻辑上讲,将用户数据纯粹存储在数据库中是个坏主意。但是,阻止诸如“ <”,““>”或“'”之类的字符也是一个坏主意。

我在PHP中看到了一个名为htmlspecialchars()的函数。许多网站都说,用用户输入来调用此功能就足够了。在我看来,如果不进行更多检查,此解决方案确实很冒险。

有人对我有什么提示,我如何在不降低“可用性”的情况下安全地验证用户输入?谢谢。

1 个答案:

答案 0 :(得分:1)

  

但是检查自由字段(如联系我们的文本eareara或评论字段)的最佳方法是什么?特别是在评论字段中,用户还应该使用“ <”,““>”或“'”之类的“危险”字符。

您可以为每个危险字符使用if (strpos($string, '<') !== false)(其中“危险”是特定于域的)。

  

处理用户输入的最佳方法是什么?从逻辑上讲,将用户数据纯粹存储在数据库中是个坏主意。但是,阻止诸如“ <”,““>”或“'”之类的字符也是一个坏主意。

  1. 为防止SQL注入,just use prepared statements。 (注意:未模拟准备好的语句。)
  2. 为防止XSS,请escape on output, never on input

输入验证没有神奇的灵丹妙药。您必须知道代码对数据的处理方式,才能确定哪些是安全的,哪些是不安全的。 LDAP查询与SQL查询,XPath查询或文件系统路径具有不同的安全要求。

如果出于安全性原因而寻找更通用的输入验证库,Ionizer值得一试。