是filter_var
什么好用于过滤数据?它会过滤哪种不良数据?我确实使用,mysql_real_escape_string
但我想知道添加filter_var
是否有帮助?
为了防止SQL注入,尽可能使用预处理语句.如果不是,请将mysql_real_escape_string用于字符串,将(int)cast或intval()用于整数,(float)或floatval()用于浮点数,并使用addcslashes($ input,'%_')用于LIKE语句中使用的字符串.当尝试转义要在RLIKE语句中使用的字符串时,事情变得更加复杂.
对于过滤HTML内容,最好的是strip_tags(不传递$ allowable_tags),但是......你可能不喜欢/想要它,在这种情况下最经济实惠的解决方案是:
$escaped = htmlspecialchars($input, ENT_QUOTES, $your_charset);
更可靠的解决方案是使用像HTML Purifier这样的库
过滤器功能没问题,但其中一些比过滤器更有效.根据您的需要,您可能会发现其中一些有用.
您可以filter_var
使用FILTER_*
常量进行调整.听起来你正在寻找数据的卫生处理(实际调整数据以使其安全*)而不是验证(检查数据是安全的).
不同的过滤器可以帮助完成不同的任 虽然mysql_real_escape_string
可以清理数据以防止SQL注入,但输出可能包含HTML的数据并不好.这是我用于日常任务的几个过滤器:
FILTER_SANITIZE_SPECIAL_CHARS
- 用于显示(不删除)HTML代码,防止XSS攻击并将符号转换为HTML实体.
FILTER_SANITIZE_STRING
带有STRIP_LOW/HIGH
标志 - 实际上删除了HTML(请参阅参考资料strip_tags
).
FILTER_SANITIZE_URL
- 使URL安全*.
FILTER_SANITIZE_EMAIL
- 使电子邮件地址安全,虽然我更喜欢在存储地址之前使用它的验证表.
*我松散地使用安全,我认为你永远不会太确定.