use*_*133 12 php security email
我有一个表单,我接受用户的姓名,电子邮件和消息.我对名称,电子邮件和消息进行验证,然后使用该mail()功能发送它.
如果我输入了$name,$email并且$message在数据库中,我将转义此数据以进行SQL注入; 或者,如果我在网页上回应它,我会使用htmlspecialchars().
当我通过电子邮件发送此数据时,我该怎么办?我知道我不必担心SQL注入,但是XSS呢?我也应该使用htmlspecialchars()这三个变量吗?
我这样发邮件:
mail('admin@mywebsite.com', 'Contact From: '. $name, "$message", 'From: '. $email);
Run Code Online (Sandbox Code Playgroud)
我读过有关电子邮件注入的内容,但我无法理解.
请让我知道这件事.
转义完全取决于数据嵌入的上下文.
你在发送HTML邮件吗?然后你有HTML上下文,htmlspecialchars()必须使用.
如果您要发送纯文本邮件,则无法转义纯文本.
唯一的威胁是你的邮件客户端有一些错误,它将纯文本解释为可执行文件,然后当你得到一些奇怪的名字和邮件地址时就会起作用.
但这仅适用于邮件的内容,而不适用于实际的标题.
您正在使用自定义邮件标头From.不要使用它.From用于垃圾邮件过滤器.如果我要输入我的邮件地址,并且您要发送此邮件From: my@mail,则表示您正在冒充我自己的电子邮件服务器.垃圾邮件曾经用它来隐藏真实的来源,并将投诉和错误反馈重定向到该邮件地址背后的不快乐的人.因此,今天有一些机制可以防止这种滥用.所以,不要假装我发送这封邮件 - 你这样做.
如果您希望能够通过单击回复按钮来回答我,请使用Reply-to标题,但始终使用From: dont-answer@YOURWEBSITE.example.
此外,这些自定义标头是坏事的入口点.确保您只添加邮件地址.确保您不添加任何换行符.这些会使邮件服务器认为有一个新的标题出现,这可能会导致邮件头注入.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2814 次  |  
        
|   最近记录:  |