【问题标题】:what is the difference between sanitizing and validation in php?php中的消毒和验证有什么区别?
【发布时间】:2015-12-11 05:33:19
【问题描述】:

我是一名初级 PHP 开发人员,正在处理有关 PHP 脚本注入的问题。
幸运的是,PHP 有像 filter_varstrip_tags 这样的函数,它们完美地完成了我的工作。 但我不明白 Sanitize 和 Validate
这两个术语之间的区别 请解释一下区别,谢谢

【问题讨论】:

  • 也许可以这样想:验证将针对规则(例如表单要求 - 密码不能留空),而 Sanitize 将针对恶意内容提供保护。
  • 您添加的这两个标签下列出的定义是神一样的
  • @dagon 但干净的代码意味着它没有恶意字符,从而避免了注入,对吗?
  • “干净”是为了什么目的?添加到数据库,添加到网页,发送电子邮件,这些都是不同的
  • 我猜克里斯的解释给了我一个新的思考角度,谢谢克里斯

标签: php validation sanitization


【解决方案1】:

验证是确保输入符合您的业务规则。如果不是,则拒绝输入。您可能希望用户向您提供一个数字,但如果您收到的不是数字,那么这是一个验证错误。

而清理意味着确保输入的格式不会破坏其容器。这可能是用户错误地将分号(;)添加到输入中,因此您在将其发送给您时为他删除/转义它。在处理基于用户输入的数据库时,清理也用于避免任何导致数据损坏的尝试。

【讨论】:

  • 当您编写“业务规则”时。你在谈论控制器中的逻辑吗? (MVC 模型;在这种情况下,控制结构如 if-else if-else、switch))
【解决方案2】:

清理从变量 $email 中删除所有非法字符,如果您使用 filter_var 和验证参数,那么它会检查它是否是有效的电子邮件地址。

$a = 'joe@example.org';

$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) {
    echo "This (a) sanitized email address is considered valid.\n";
}

请参阅此link 以供参考。

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多