清洗输入不仅仅是通过各种过滤器来处理输入。
清洗输入是关于不让用户输入污染你的应用程序。
然而,重要问题是,你不想要什么?
第一个例子
你创建了一个页面,允许用户发送文本消息。 你期望的输入是电话号码和短信。
查看手册中的规则参考,我可能会选择以下规则:
numeric|exact_length[8]
我希望确保输入为数字,并且输入与我的地区电话号码的长度相匹配,所以我制定了这些规则。由于我已经验证了输入为数字,因此可以假设XSS和SQL注入尝试应该失败(因为这些攻击包含非数字字符)。
对于文本消息字段,我会使用trim和required:trim|required
因为我不希望发送空消息。
第二个例子
允许用户评论是一种允许用户在您的网站上发垃圾邮件或注入恶意代码的好方法。
基本上,你需要一个名字、一个电子邮件和评论。
所有的输入都需要必填。电子邮件需要进行验证。但是评论和姓名需要清理XSS和额外的空格/换行符。
我的验证和净化如下所示:
$this->form_validation->set_rules('name', 'Name', 'required|trim|xss_clean');
$this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');
$this->form_validation->set_rules('comment', 'Comment', 'required|trim|xss_clean');
必须对需要清理的内容进行清理,不要对所有内容都进行清理 - 并且只为所需的内容进行清理。
确保在将数据插入后端时使用Active Record/Query Builder正确地转义输入,或者使用Query Bindings,该工具会为您完成相同的操作。