【发布时间】:2013-02-26 23:10:56
【问题描述】:
我使用 jQuery 创建了一个 AJAX 提交表单并使用 PHP 处理表单邮件程序(如下所示。)根据下面的代码,从 AJAX 接收的内容中转义超全局 $_POST 变量的最佳方法是什么/jQuery 形式?可以将 trim() 函数包装在 htmlspecialchars() 函数中吗?在发送 php 邮件时,由于电子邮件的内容没有被插入到数据库中,我必须关注哪种类型的安全性。
<?php
$content_link = trim($_POST['content_link']);
$email = trim($_POST['email']);
$viewport_size = trim($_POST['viewportsize']);
$browser = trim($_POST['browser']);
$os = trim($_POST['os']);
$current_page = trim($_POST['current_page']);
$to = '<example@example.com>';
$from = '<' . $email . '>';
$subject = 'Form Submission';
$message = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<table>
<tr><td>Content Link:</td><td>' . nl2br($content_link) . '</td></tr>
<tr><td>Email:</td><td>' . $email . '</td></tr>
<tr><td>Viewport Size:</td><td>' . $viewport_size . '</td></tr>
<tr><td>Browser/OS:</td><td>' . $browser . '/' . $os . '</td></tr>
<tr><td>Current Page:</td><td>' . $current_page . '</td></tr>
</table>
</body>
</html>';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
mail($to,$subject,$message,$headers);
【问题讨论】:
-
htmlentites($value) 用于回显任何数据以防止人们提交 javascript 等。
-
你需要做一些工作来防止email injection。