php安全,类型转换为字符串密码

时间:2015-01-06 15:32:31

标签: php mysql casting passwords

问题: 是否安全地将提交的密码强制转换为字符串?     $ b =(字符串)$ a;

注释: 我不想知道更多高效的方式,我只是想要一种安全的方式。仅供以下用例使用:

步骤1 - 注册密码(PW):

  1. 通过注册获取PW,
  2. 将其投射到字符串
  3. String to Hash
  4. 在MYSQL中保存哈希
  5. 第2步 - 登录表格,获取PW:

    1. 通过表格获取PW
    2. 将其投射到字符串
    3. 从数据库中获取哈希值
    4. 比较两者
    5. 我想这是最简单的方法,但却是最安全的方式之一。我想允许PW的每个角色,

      • < / {} *#

      为什么不是亚洲符号。 我想:这个方法不应该带来转义问题的麻烦,因为无论代码是什么,现在都是一个字符串,只与字符串进行比较。但我可以拥有每一个角色,没有危险。 一个Mysql数据库应该允许每个char设置为UTF8,对吗? 所以请回答我:这个想法是不是很简单?

      提前谢谢你 格尔德

1 个答案:

答案 0 :(得分:1)

我不相信将密码输入字符串会影响应用程序的整体安全性,无论哪种方式。从这个意义上讲,我认为这个问题有点误导。

作为为什么强制转换为字符串并不能真正帮助您或伤害您的一个示例,请考虑针对数据库的最常见攻击方式之一:SQL注入。在网页上设置一个表单,该表单接受用户输入,将其POST到服务器端脚本,该脚本使用该用户输入构建查询,并且突然之间您很容易受到攻击。由于所有SQL查询都是字符串,因此如果您转换为字符串,它在这里会非常重要。

但是如果你知道你需要一个表单(任何形式)的字符串,并且某人键入整数怎么办?试试这个..

制作包含以下内容的网页:

<!DOCTYPE html>
<html>
    <head><title></title></head>
    <body>
        <form method="POST" action="/test.php">
            <input type="text" name="testInput">
            <input type="submit">
        </form>
    </body>
</html>

test.php中,只需转出$_POST

<?php 
    var_dump($_POST);

然后在表单字段中输入一个整数,看看PHP为它吐出的类型。这是我得到的输出:

array (size=1)
  'testInput' => string '5.25' (length=4)

由于实际构建一个包含PHP对象的POST是不可能的(JSON本身只是一个字符串,直到它被解码),我们真的只担心这里的本机数据类型。如上所示,当PHP收到它时,即使是非字符串输入也会被转换为字符串数据。

这不是关于数据来自何处,无论是来自表单还是脚本,它都是PHP如何接收数据并使其可供您使用。我可以构建相同的形式&#39;以执行cURL请求并接收相同输出的脚本的方式。