首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码输入的安全验证技术

密码输入的安全验证技术
EN

Stack Overflow用户
提问于 2018-03-27 21:21:12
回答 2查看 679关注 0票数 1

所以,在验证密码输入时使用$code更好还是我只需要使用$_POST['code']

在安全性方面,secure_input函数究竟应该在什么时候使用?

是否有更好的方法来执行下面的密码验证?

关于php表单安全这里的更多信息

PhpFiddle

代码语言:javascript
复制
<?php
    function secure_input($data) {
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
        $code = secure_input($_POST['code']);

        if($code == "ok") echo 'success';
    ?>
     <form method="post" action="">  
     Name: <input type="text" name="code">
    <input type="submit">
    </form>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-28 09:53:48

在安全性方面,secure_input函数究竟应该在什么时候使用?

绝不可能。太可怕了。

$data = stripslashes($data); -别这么做.处理魔术引号问题是很困难的。在2018年,您不应该使用PHP版本,它甚至支持神奇的引号。

$data = htmlspecialchars($data); -这使得将文本字符串插入到HTML中是安全的。您没有将值输出到HTML文档中,所以这里不要这样做。

是否有更好的方法来执行下面的密码验证?

不应将密码存储在纯文本中。应该对其进行散列,然后使用验证函数将用户输入(应该是原始用户输入,而不是密码的html表示形式)与之进行比较。

PHP有关于如何处理密码的常见问题

代码语言:javascript
复制
<?php

    $submitted_password = $_POST['code'];
    $submitted_password = "ok"; # Because this demo doesn't get any POST data

    if (password_verify($submitted_password, "$2y$10$76xEMDyKtZEo036w2mQ/zemy3VUDXFhOHRvrljK1F9/6a7rVqlsdi")) {
        print "Good password";
    } else {
        print "Bad password";
    }

?>
票数 2
EN

Stack Overflow用户

发布于 2018-03-28 09:32:27

您不需要像上面所概述的那样,为了比较的目的而转义密码输入。

代码语言:javascript
复制
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $authorised = 'secret' == ($_POST['password'] ?? null);
    echo $authorised ? 'Credential match.' : 'Credential mismatch.';
}

?>
<form method="post">
    Password:<input type="password" name="password">
    <input type="submit" value="Authorise me">
</form>

或许更明智的做法是存储密码的散列。

在安全性方面,secure_input函数究竟应该在什么时候使用?

请参阅:https://stackoverflow.com/a/4224002/3392762

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49522604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档