这些页面将展示如何安全地处理 PHP 表单。对 HTML 表单数据进行适当的验证对于防范黑客和垃圾邮件很重要!
我们稍后使用的 HTML 表单包含多种输入字段:必需和可选的文本字段、单选按钮以及提交按钮:
name、email 和 website 属于文本输入元素,comment 字段是文本框。HTML 代码是这样的:
Name: input type= text name= name E-mail: input type= text name= email Website: input type= text name= website Comment: textarea name= comment rows= 5 cols= 40 /textarea
因此,$_SERVER[ PHP_SELF ] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
什么是 htmlspecialchars() 函数?htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 和 之类的 HTML 字符会被替换为 和 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
提示:跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于 Web 应用程序。XSS 能够使攻击者向其他用户浏览的网页中输入客户端脚本。
假设我们的一张名为 test_form.php 的页面中有如下表单:
form method= post action= ?php echo $_SERVER[ PHP_SELF ?
现在,如果用户进入的是地址栏中正常的 URL: http://www.example.com/test_form.php ,上面的代码会转换为:
form method= post action= test_form.php
到目前,一切正常。
不过,如果用户在地址栏中键入了如下 URL:
http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
在这种情况下,上面的代码会转换为:
form method= post action= test_form.php / script alert('hacked') /script
这段代码加入了一段脚本和一个提示命令。并且当此页面加载后,就会执行 JavaScript 代码(用户会看到一个提示框)。这仅仅是一个关于 PHP_SELF 变量如何被利用的简单无害案例。
您应该意识到 script 标签内能够添加任何 JavaScript 代码!黑客能够把用户重定向到另一台服务器上的某个文件,该文件中的恶意代码能够更改全局变量或将表单提交到其他地址以保存用户数据,等等。
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。现在,如果用户试图利用 PHP_SELF 变量,会导致如下输出:
form method= post action= test_form.php/ quot; script alert('hacked') /script
无法利用,没有危害!
运行实例
请注意在脚本开头,我们检查了表单是否使用 $_SERVER[ REQUEST_METHOD ] 进行提交。如果 REQUEST_METHOD 是 POST,那么表单已被提交 - 并且应该对其进行验证。如果未提交,则跳过验证并显示一个空白表单。
不过,在上面的例子中,所有输入字段都是可选的。即使用户未输入任何数据,脚本也能正常工作。
下一步是制作必填输入字段,并创建需要时使用的错误消息。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答