Php 国际名称的确认和消毒
我发现这表明,除了检查字符串是否为空之外,我们最好根本不进行验证。考虑到这似乎是合理的 我们是否应该完全停止验证?Php 国际名称的确认和消毒,php,regex,validation,pcre,sanitization,Php,Regex,Validation,Pcre,Sanitization,我发现这表明,除了检查字符串是否为空之外,我们最好根本不进行验证。考虑到这似乎是合理的 我们是否应该完全停止验证? $pdo = $connection->prepare("INSERT INTO clicks (domain, sid) VALUES (:domain, :sid)"); $pdo->execute(array( ":domain" => $domain, ":sid" => $sid )); 在国际名称消毒方面,准备好的声明是否足够? $pd
$pdo = $connection->prepare("INSERT INTO clicks (domain, sid) VALUES (:domain, :sid)");
$pdo->execute(array(
":domain" => $domain,
":sid" => $sid
));
在国际名称消毒方面,准备好的声明是否足够?
$pdo = $connection->prepare("INSERT INTO clicks (domain, sid) VALUES (:domain, :sid)");
$pdo->execute(array(
":domain" => $domain,
":sid" => $sid
));
另一种方法是不允许某些字符,而不是尝试匹配包含的字符。然而,这也会变得棘手
我们是不是应该一起去
可能吧。我同意链接用户的回答。试图猜测名字只会让你痛苦
在对国际名称进行消毒时,准备好的声明是否足够
如果操作正确,则是。请注意,仅使用准备好的语句是不够的,还需要使用绑定参数
我想这就是你的意思,但我觉得我在这里需要学究,因为我经常看到这种“事先准备好的声明”:
对否决票的解释会很有用……如果您将输入值正确绑定到准备好的语句(看起来是这样),那么值中允许哪些字符与SQL注入无关,因为该值不可能成为查询的一部分@我使用的是
$pdo=$connection->prepare(“插入表(列)值(:column)
),然后分别绑定它们(例如$pdo->bindParam(:column“,$column)
),或者将它们作为关联数组执行(例如$pdo->execute(数组(:column“=>$column))
这些准备好的语句足以净化国际名称吗?@csabinho我上面评论中准备好的语句足以净化国际名称吗?@csabinho是的,这正是我的观点。我经常看到这一点,人们认为仅仅使用prepare()
使它们更安全。我只是想指出,您还需要绑定。@BugWhisper在没有看到所有代码的情况下是不可能说出来的,但是是的,您的基本想法是正确的。我添加了代码。您还需要看到哪些代码才能知道准备好的语句是否足以对国际名称进行消毒?