我正在编写一个PHP脚本来从提交的表单中获取文本框数据.这些是简单的文本框,我不想接受任何HTML标记.我想我至少应该使用strip_tags()和addslashes().还要别的吗?我不介意限制输入到字母数字,我应该使用正则表达式来寻找非标准字符吗?
这是一个简单的表单,实际上(呃)通过电子邮件发送给处理它的人.(遗憾的是没有数据库.)这是简单的数据,名字和姓氏.
编辑:我也想知道我应该寻找什么.合理输入过滤的共识是什么?
使用PHP过滤器功能.
您可以使用它们来清理输入和验证输入(例如电子邮件地址).
验证有两种方法(这也适用于安全性和许多其他方面).
首先,您可以默认允许除明确禁止的内容之外的任何内容.或者你可以默认禁止除了特别允许的所有内容.
一般来说,后一种方法更安全,应该被使用,除非你有令人信服的理由不要(例如,它很难知道什么是允许的,你正在为不被认为是一个用户的用户做一个应用程序安全威胁等).
但是你必须小心使用它.对于人们的名字,像'和 - 这样的字符是完全有效的,但天真的实现可能会限制它们.您通常希望避免的是:
SQL注入:总是在任何输入上使用mysql_real_escape_string() ;
XSS(跨站点脚本):一般来说,您应该从用户输入中删除HTML标记.当然,您有时必须允许它们(例如,富文本编辑器框),但即使在这些情况下,您将拥有一个允许的标记列表,您应该删除所有其他标记(尤其是标记); 和
通常你应该删除低字符(低于ASCII 20?左右); 和
根据您的国际化要求,您可能需要删除高字符(ASCII 127以上).
一个好的默认值是:
$var = filter_var($var, FILTER_SANITIZE_STRING);
但为这种情况选择合适的过滤器.