本章节我们将介绍如何使用PHP验证客户端提交的表单数据。
PHP 表单验证
在处理PHP表单时我们需要考虑安全性。 本章节我们将展示PHP表单数据安全处理,为了防止黑客及垃圾信息我们需要对表单进行数据安全验证。 |
在本章节介绍的HTML表单中包含以下输入字段: 必须与可选文本字段,单选按钮,及提交按钮:
实例
您输入的内容是:"; echo $name; echo "PHP中文网(php.cn) PHP 表单验证实例
* 必需字段。
"; echo $email; echo "
"; echo $website; echo "
"; echo $comment; echo "
"; echo $gender; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
上述表单验证规则如下:
字段 | 验证规则 |
---|---|
名字 | 必须。 +只能包含字母和空格 |
必须。 + 必须是一个有效的电子邮件地址(包含'@'和'.') | |
网址 | 必须。如果存在,它必须包含一个有效的URL |
备注 | 必须。 多行输入字段(文本域) |
性别 | 必须。 必须选择一个 |
首先让我们先看看纯HTML的表单代码:
文本字段
"名字", "E-mail", 及"网址"字段为文本输入元素,"备注"字段是 textarea。HTML代码如下所示:
“名字”: E-mail: 网址: 备注:
单选按钮
"性别"字段是单选按钮,HTML代码如下所示:
女 男
表单元素
HTML 表单代码如下所示:
什么是 $_SERVER["PHP_SELF"] 变量? $_SERVER["PHP_SELF"]是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关。 |
所以, $_SERVER["PHP_SELF"] 会发送表单数据到当前页面,而不是跳转到不同的页面。
什么是 htmlspecialchars()方法? htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。 预定义的字符是:
|
PHP表单中需引起注重的地方?
$_SERVER["PHP_SELF"] 变量有可能会被黑客使用!
当黑客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。
XSS又叫 CSS (Cross-Site Script) ,跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。 |
指定以下表单文件名为 "test_form.php":
但是,考虑到用户会在浏览器地址栏中输入以下地址:
//m.sbmmt.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E以上的 URL 中,将被解析为如下代码并执行:
请注意,任何JavaScript代码可以添加在">尝试该漏洞失败!