以下是验证来自帖子的某些信息的有效方法吗?
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.
}
你看到这个功能有任何安全漏洞吗?如果是的话,你能帮我解决一下吗?
答案 0 :(得分:2)
不完全。
这是PHP用户中常见的错误
以下是您的代码中的规则:
数据验证是一回事,sql安全是另一回事 数据验证规则可能会更改。 Sql安全规则不应该。
虽然您当前的代码是安全的,但提出这样一个问题的想法是错误的 尽管有数据源和内容,您必须使用无条件的sql保护技术。这是确定的唯一方法。
除此之外,为不同的领域创建不同的规则也没有意义 只需运行验证,然后就必须调用这样的代码
$db->insert($table,$data);
让内部人员处理数据(不知道它的安全性,有效性或其他任何废话)。明白了吗?
答案 1 :(得分:1)
这是完全有效和安全的,因为您不会收到任何SQL注入。顺便说一句,如果你要重复查询,而不是pdo->query
去准备好的陈述。