为什么建议单独进行消毒和逃逸

时间:2016-06-19 01:59:09

标签: php

我已经阅读了很多关于php安全性的文章,他们中的大多数都建议我只需要在输出时清理用户输入,如果我只想将它存储在我的数据库中,我只需要逃避它使用PDO。

为什么一次清理和转义用户输入然后将其存储在我的数据库中是不明智/好的,当我想输出它时,我只是从我的数据库中查询它并将其显示给用户而没有任何输入清理或逃避,因为当用户第一次输入数据时我已经完成了所有这些操作?

1 个答案:

答案 0 :(得分:2)

相同的数据可用于多个应用程序。对于不同的应用,适当类型的消毒可能是不同的。可能存在一些用例,其中可能需要社会安全号码或信用卡号码,而其他应用程序应将其删除。

您需要转义转发到数据库的数据,以便数据中的字符不会被解释为PHP处理器或数据库系统的命令。如果要将数据用作HTML文档的一部分,您可能还需要转义数据库中的数据。

在进入数据库之前清理数据的情况是应用程序不应知道某些信息。例如,某些系统会检查自由文本数据并删除看似社会安全号码的项目,因为在数据库中包含社会安全号码会违反安全规定。