关于帖子验证的Php安全问题

时间:2011-09-28 11:42:50

标签: php security

以下是验证来自帖子的某些信息的有效方法吗?

function validate($age, $name, $sex) {
    $pdo = new PDO(...);
    $age = (int)$age;
    $name = $pdo -> quote($name);
    $sex = (strtolower($sex) == "m" ? "m" : "f");

    // and then process data with pdo's query method.
}

你看到这个功能有任何安全漏洞吗?如果是的话,你能帮我解决一下吗?

2 个答案:

答案 0 :(得分:2)

不完全。
这是PHP用户中常见的错误 以下是您的代码中的规则:

不要将数据验证与sql security混合使用。

数据验证是一回事,sql安全是另一回事 数据验证规则可能会更改。 Sql安全规则不应该。

虽然您当前的代码是安全的,但提出这样一个问题的想法是错误的 尽管有数据源和内容,您必须使用无条件的sql保护技术。这是确定的唯一方法。

除此之外,为不同的领域创建不同的规则也没有意义 只需运行验证,然后就必须调用这样的代码

$db->insert($table,$data);

让内部人员处理数据(不知道它的安全性,有效性或其他任何废话)。明白了吗?

答案 1 :(得分:1)

这是完全有效和安全的,因为您不会收到任何SQL注入。顺便说一句,如果你要重复查询,而不是pdo->query去准备好的陈述。