我应该消毒和验证吗?

时间:2013-08-05 22:05:53

标签: wordpress validation sanitization

对我来说,当我需要验证和清理用户输入时,并不总是很清楚。我想有些人可能会说"总是",但是......

目前我正在管理区域中创建一个带有后端主题选项的主题。我想要做的是创建一个textarea wish将包含将在主题的页脚中输出的html。

我在考虑只在esc_textarea()的帮助下逃避价值。

所以基本上没有验证,只有一些测量,以确保它不会破坏textarea因为它的内容(让我们说用户放入</textarea>)。

那么你能否回答我的具体问题,但请告诉我更多关于何时应该验证和消毒的问题。所以我不是问怎么做,而只是描述应该做什么。我知道所有不同的辅助函数,但不知道何时使用:

1 个答案:

答案 0 :(得分:0)

简答:

始终清理适当的上下文。验证商业案例是否需要它。

更长的答案:

验证

验证是为了确保数据的正确性和实用性。

如果您要求用户提供电话号码或银行帐号,请确认其数字和短划线如123-456-789。如果您要求提供电子邮件地址,则需要验证以确保@和点等。

您应该两次验证用户输入。

客户端验证是为了用户体验。您可以在不进行往返服务器往返的情况下通知用户他们的输入是否无效。但是,可以绕过客户端验证,因此您也应该验证服务器端,以确保数据完整性。

消毒

清理是为了确保数据安全并防止代码注入。

您应该始终根据输入数据的使用方式进行清理。

在将用户输入存储在数据库中并稍后将其写入屏幕的简单情况下,您需要对数据进行两次清理。

当您向数据库写入用户输入时,您首先要确保它不包含SQL注入,因此您需要对SQL注入进行适当的清理。

稍后,当您想从数据库中提取数据并显示它时,您需要清理它以进行HTML和Javascript注入,然后再将其打印到屏幕上。


回答你的评论:

永远不要信任用户输入。验证数据。甚至管理员都会犯错误。清理数据。保护您的网站免受代码注入。

正确的逻辑是这样的:

输入:

原始输入 - &gt;验证(客户端) - &gt;发送到服务器 - &gt;再次验证(服务器端) - &gt; SQL Sanitize - &gt;存储在DB中。

输出:

从数据库中读取数据 - &gt;清理HTML和JS - &gt;打印到屏幕。