版权声明:未经同意,不得随意转载转载 https://blog.csdn.net/lucky541788/article/details/82930873
PHP表单中需引起注重的地方?
$_SERVER["PHP_SELF"]
变量有可能会被黑客使用!
当黑客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]
服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]
的字符串就会包含HTTP链接后面的JavaScript程序代码。
如何避免 $_SERVER["PHP_SELF"]
被利用?
$_SERVER["PHP_SELF"]
可以通过 htmlspecialchars() 函数来避免被利用。
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。
form 代码如下所示:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
当用户提交表单时,我们将做以下两件事情:
- 使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
- 使用PHP stripslashes()函数去除用户输入数据中的反斜杠 ()
将这些过滤的函数写在一个我们自己定义的函数中,这样可以大大提高代码的复用性。
<?php
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$website = test_input($_POST["website"]);
$comment = test_input($_POST["comment"]);
$gender = test_input($_POST["gender"]);
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
注意我们在执行以上脚本时,会通过$_SERVER["REQUEST_METHOD"]
来检测表单是否被提交 。如果 REQUEST_METHOD
是 POST, 表单将被提交 - 数据将被验证。如果表单未提交将跳过验证并显示空白。