Php 正在清理数据+;PDO oveekill中的参数化?

Php 正在清理数据+;PDO oveekill中的参数化?,php,pdo,Php,Pdo,在使用PDO准备的语句时,使用filter_input()或任何类似的验证/卫生功能是否过度: $sql = "SELECT count(*) FROM players_test WHERE email = :value"; $stmt = $pdo->prepare($sql); $value = filter_input(INPUT_POST, 'signupEmail', FILTER_SANITIZE_STRING); $stmt->bindParam(':value',

在使用PDO准备的语句时,使用filter_input()或任何类似的验证/卫生功能是否过度:

$sql =  "SELECT count(*) FROM players_test WHERE email = :value";
$stmt = $pdo->prepare($sql);
$value = filter_input(INPUT_POST, 'signupEmail', FILTER_SANITIZE_STRING); 
$stmt->bindParam(':value', $value, PDO::PARAM_STR);
$stmt->execute();

处理Sting和整数的合理方法是什么?

这个问题有三种可能的答案

  • 若您只关心SQL注入,而整个SQL查询是用PHP脚本硬编码的(就像在您的示例中),那个么只需要准备好的语句。因此,清理字符串是过分的,而且与此无关
  • 如果您只关心SQL注入,并且SQL的某些部分是动态组装的,那么您必须保护这些部分。但保护应该针对这些部分,这使得消毒字符串毫无用处
  • 如果您关心的不仅仅是SQL注入,还有其他安全性或可用性问题,那么您可能需要根据这些问题清理或验证数据。其中一种情况也可能使用sanitize_字符串

  • 没有办法回答这个问题。要使数据“安全”,你必须做什么完全取决于它的用途。e、 比如说,这是一些时髦的警方取证数据存储,这意味着你需要准确地存储原始数据。清理将通过删除“坏”内容来销毁一些原始数据。现在你的法庭案件因为证据被篡改而被驳回。如果你想看到好的实践,我建议你看看流行框架的来源,比如Laravel或Zend,看看他们是如何处理的。@Parziphal你知道这些来源包括多少行吗?@YourCommonSense Well。。。我认为,如果你真的想看看大人物是如何处理事情的,你真的想学习,你就不会在乎你会读多少行。@Parziphal hoe你亲自读了多少行?你学到了什么?