国际名称的验证和消毒

Validation and Sanitization of International Names

我遇到了这个answer, that suggests, other than checking if the string is empty, we are probably better off not validating at all. Considering the scope of possible characters when dealing with international names,这似乎是合理的。

我们是否应该完全放弃验证?

在清理国际名称时,准备好的陈述是否足够?

$pdo = $connection->prepare("INSERT INTO clicks (domain, sid) VALUES (:domain, :sid)");
$pdo->execute(array(
  ":domain" => $domain,
  ":sid" => $sid
));

另一种方法是禁止某些字符,而不是尝试匹配包含的字符。然而,这也会变得棘手。

Should we be foregoing validation altogether?

可能吧。我同意链接用户的回答。试图猜测名字只会让你痛苦。

Are prepared statements sufficient when it comes to sanitizing international names?

如果操作正确,是的。请注意,仅使用准备好的语句是不够的,您还需要使用绑定参数。

我想这就是你的意思,但我觉得我需要在这里迂腐,因为我经常看到这种 "prepared statement":

$db->prepare("select * from users where id = $id");