Php 是否建议也清除密码输入?

Php 是否建议也清除密码输入?,php,security,pdo,Php,Security,Pdo,我清理用户名输入,如下所示: function clean($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } 我正在使用PDO格式的准备好的语句并对密码进行散列,所以仍然建议清除密码输入吗 下面是代码。当心,到目前为止它还没有完成,而且非常混乱 <?php // start session sessi

我清理用户名输入,如下所示:

function clean($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
我正在使用PDO格式的准备好的语句并对密码进行散列,所以仍然建议清除密码输入吗

下面是代码。当心,到目前为止它还没有完成,而且非常混乱

<?php
  // start session
  session_start();
?>
<!DOCTYPE html>
<head>
  <link href='css/verify-id.css' rel='stylesheet'>
</head>
<body>
<?php
function clean($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

  // set or enter password
  if (isset($_POST['password']) && empty($_POST['password'])) {

    $error    = 'A password is required.';
    $identity = '';
    $tip      = '';
    $prompt   = '';

  } else if (isset($_POST['password']) && !empty($_POST['password'])) {
    //echo '<br>SESSION idPersist<br>'.$_SESSION['idPersist'];
    //echo '<br><br>POST password<br>'.$_POST['password'];

    $password = $_SESSION['password'];
    $idPersist = $_SESSION['idPersist'];

    include 'include/database-connection.php';

    if ($_SESSION['prompt'] === 'Enter Password') {
      //echo '<br><br>SESSION prompt is Enter Password';

      // compare password
      $sql  = 'SELECT pass FROM guests WHERE id = :id';
      $stmt = $conn->prepare($sql);
      $stmt->bindParam(':id', $idPersist);
      $conn->exec($sql);

    } else if ($_SESSION['prompt'] === 'Set Password') {
      echo '<br><br>SESSION prompt is Set Password';
    /*
      // set password
      $sql  = 'INSERT INTO guests (pass)
        VALUES (:password)';
      $stmt = $conn->prepare($sql);
      $stmt->bindParam(':password', $password);
      //$conn->exec($sql);
    */
    }

    $conn = null;

    /*
    $error    = '';
    $identity = '';
    $tip      = '';
    $prompt   = '';
    */
  }

  // enter id
  if (!isset($_POST['password']) && empty($_POST['id'])) {
    $error  = 'An ID is required.';
  } else if (!isset($_POST['password']) && !empty($_POST['id'])) {
    include 'include/database-connection.php';
    $id     = clean($_POST['id']);
    $sql    = 'SELECT id, pass FROM guests WHERE id = :id';
    $stmt   = $conn->prepare($sql);
    $stmt->bindParam(':id', $id);
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($result) {
      $_SESSION['idPersist'] = $id;
      $identity              = 'password';
      $tip                   = 'Password';
      $error                 = '';
      if (is_null($result['pass'])) {
        $prompt             = 'Set Password';
        $_SESSION['prompt'] = 'Set Password';
      } else {
        $prompt             = 'Enter Password';
        $_SESSION['prompt'] = 'Enter Password';
      }
    } else {
      $prompt = 'Enter Valid ID';
    }
    $conn = null;
  }

}
?>
  <form
    accept-charset ='UTF-8'
    action         ='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>'
    autocomplete   ='off'
    enctype        ='application/x-www-form-urlencoded'
    method         ='post'
    target         ='_self'>
      <input
        autofocus
        id          ='<?php
          if (empty($identity)) {
            echo 'id';
          } else {
            echo $identity;
          }
        ?>'
        name        ='<?php
          if (empty($identity)) {
            echo 'id';
          } else {
            echo $identity;
          }
        ?>'
        placeholder ='<?php
          if (empty($tip)) {
            echo 'ID';
          } else {
            echo $tip;
          }
        ?>'
        required
        size        ='25'
        title       ='<?php
          if (empty($tip)) {
            echo 'ID';
          } else {
            echo $tip;
          }
        ?>'
        type        ='text'>
      <span><?php echo $error; ?></span>
      <input
        id    ='submit'
        name  ='submit'
        type  ='submit'
        value ='<?php
        if (empty($prompt)) {
          echo 'Enter ID';
        } else {
          echo $prompt;
        }
        ?>'>
  </form>
</body>
</html>

不要弄乱用户的密码。无需清理和清理用户密码

它不会有什么害处,因为密码应该总是散列的。它不应该以原始形式存储

$2y$10$36PQzf67DtRPrn3ViqNFS.iswIU9AyIPRWV23KzmSXWD66RD7frIm这样的散列密码不会造成伤害。

不要弄乱用户的密码。无需清理和清理用户密码

它不会有什么害处,因为密码应该总是散列的。它不应该以原始形式存储


$2y$10$36PQzf67DtRPrn3ViqNFS.iswIU9AyIPRWV23KzmSXWD66RD7frIm这样的散列密码不会造成伤害。

不,不要这样做。另外,函数通常被错误地使用,请小心。在密码上应用这些过滤器有什么好处?你只是用它进行哈希运算而已?@HubertGrzeskowiak我不知道你的意思是什么?我计划对密码进行哈希运算,但我不确定是否在造成任何损坏之前对密码进行哈希运算?您也不需要
empty
isset
,一个就足够了(除非
0
是任何字段的有效值)。另外,
对XSS注入开放,默认情况下不转义单引号。三元返回,不执行。是否
回显空($identity)?'id':$identityempty
isset
,一个就足够了(除非
0
是任何字段的有效值)。另外,
对XSS注入开放,默认情况下不转义单引号。三元返回,不执行。是否
回显空($identity)?'id':$identity我只接受你对DOM的说法。这是否意味着散列是在发布输入之前进行的?因此,某些输入(即,
等等
)在发送到服务器之前会变成散列字符串?密码在插入数据库之前会散列。如果密码包含某种可能有害的代码,它将毫无用处,因为它将被散列成类似
$2y$10$36PQzf67DtRPrn3ViqNFS.iswIU9AyIPRWV23KzmSXWD66RD7frIm
@Anthony仔细看,散列是存储/比较的内容,而不是纯文本值。@Spectarion好的,很好,这就是我想知道的。谢谢大家@chris85是的,我知道:)我刚刚接触PHP,所以不完全确定事件的顺序这意味着散列是在发布输入之前进行的吗?因此,某些输入(即,
等等
)在发送到服务器之前会变成散列字符串?密码在插入数据库之前会散列。如果密码包含某种可能有害的代码,它将毫无用处,因为它将被散列成类似
$2y$10$36PQzf67DtRPrn3ViqNFS.iswIU9AyIPRWV23KzmSXWD66RD7frIm
@Anthony仔细看,散列是存储/比较的内容,而不是纯文本值。@Spectarion好的,很好,这就是我想知道的。谢谢大家@chris85是的,我知道:)我刚刚接触PHP,所以不完全确定事件的顺序