我用PHP邮寄表单输入.
我应该这样做:
$_POST['whatever'] = function_to_remove_control_characters($_POST['whatever']);
Run Code Online (Sandbox Code Playgroud)
要么
$whatever = function_to_remove_control_characters($_POST['whatever']);
Run Code Online (Sandbox Code Playgroud)
在我的脚本开头?
为什么?
(在输入通过邮件发送或输出到HTML之前,我进一步过滤和/或转义.)
重要的是要记住,在字符串中没有"逃避一切",不同的上下文需要不同的转义.因此,转义字符串以在SQL中使用的函数与转义它以在HTML中使用或在电子邮件正文中使用的函数不同.
因此,您的转义应该尽可能晚地发生,您将文本用于特定目的,而不是一旦您收到用户的输入.同样,您不希望在应用了不同的转义时覆盖相同的变量 - 例如,您可能希望在HTML模板和纯文本电子邮件中使用它,因此希望htmlspecialchars()在一个地方而不是另一个地方应用.
这导致第二种方法,使用局部变量,是更好的方法,因为重写$_POST意味着对用户的输入进行全局更改,这可能在代码的其他地方不适用.
在某些情况下,您可能需要进行清理(例如修剪空格,剥离而不是转义禁用的字符),然后在多个上下文中使用,但如果使用新变量执行此操作仍然是最清晰的,那么您可以跟踪哪些更改应用.这样,$_POST始终代表用户实际提交的内容,而不是您希望他们提交的内容.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |