如果用户输入只是要被散列并存储为密码,那么有什么理由转义用户输入呢?


Is there any reason to escape user input if it is just going to be hashed and stored as a password?

如果用户输入只是被散列并存储为密码,那么是否有任何理由转义用户输入?它永远不会显示在任何地方,也不会输出给用户。在散列/非散列过程中或其他地方是否存在代码注入的固有危险?

在两种情况下,我们可能需要转义输入:

  1. 当我们把它放在SQL语句中;

正如你告诉我们的,第二个变量永远不会/你期望它永远不会是这种情况,如果是,我们通常在输出它之前对它进行转义,而不是在将它放入数据库之前,所以你很好。

对于第一种情况,它是为了防止SQL注入。如果您按照建议使用PDO,并且如果您使用prepare()方法,那么您就可以了,因为PDO负责保护字符串,因此它不会影响数据库(基本上它会转义它)。