PHP表单教程(2)_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP表单教程(2)

PHP表单教程(2)

 2018/3/10 23:47:09  青春..荒唐  程序员俱乐部  我要评论(0)
  • 摘要:【前言】在之前文章PHP表单教程(1)的基础上,今天继续总结PHP表单相关的知识点,在这里记录总结下【列表】(1)表单验证安全相关包含PHP表单安全性,超全局变量$_SERVER["PHP_SELF"],htmlspecialchars(特殊字符)函数(2)验证表单数据【主体】(1)表单验证安全相关处理PHP表单时安全性十分重要,下面介绍下如何安全的处理PHP表单。对于HTML表单信息进行适当验证,对于防止垃圾信息和黑客十分重要。①表单验证案例<
  • 标签:PHP 教程 表单

【前言】

? ? ? ?在之前文章PHP表单教程(1)?的基础上,今天继续总结PHP表单相关的知识点,在这里记录总结下

?

【列表】

?(1)表单验证安全相关

? ? ? ? ?包含PHP表单安全性,超全局变量$_SERVER["PHP_SELF"] ,htmlspecialchars(特殊字符) 函数

?(2)验证表单数据

?

【主体】

?(1)表单验证安全相关

处理PHP表单时安全性十分重要,下面介绍下如何安全的处理PHP表单。

对于HTML表单信息进行适当验证,对于防止垃圾信息和黑客十分重要。

?

? ?①表单验证案例

class="php" name="code"><form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    Name: <input type="text" name="name"><br>
    E-mail: <input type="text" name="email"><br>
    Website: <input type="text" name="website"><br>
    Comment: <textarea name="comment" rows="5" cols="40"></textarea><br>
Gender:
    <input type="radio" name="gender" value="female">Female
    <input type="radio" name="gender" value="male">Male
</form>

? ? 当提交此表单时,通过 method="post" 发送表单数据

? ? ②什么是 $_SERVER["PHP_SELF"] 变量?

? ? ?$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本文件名。因此,会将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。

? ? ?③什么是 htmlspecialchars() 函数?

? ? ?把特殊字符转换为 HTML 实体的函数。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。下面针对网站安全性来做下介绍

? ? ?④PHP 表单安全性

? ? ?$_SERVER["PHP_SELF"] 变量能够被黑客利用!如果您的页面使用了 PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS),关于XSS我在后面文章做介绍

? ? ??黑客可以在地址栏中键入更改的URL,在其后植入一段脚本,当此页面加载后,就会执行代码。而且<script> 标签内能够添加任何JS代码(15-50k)!黑客能够把用户重定向到另一台服务器上的某个文件,该文件中的恶意代码能够更改全局变量或将表单提交到其他地址以保存用户数据,等等

? ? ?注意:不要用Chrome测试,因为Chrome会自动拦截,踩了一下午坑才查出来问题是浏览器拦截

? ? ?⑤如果避免 $_SERVER["PHP_SELF"] 被利用?

? ?通过使用 htmlspecialchars(html特殊字符) 函数能够避免 $_SERVER["PHP_SELF"] 被利用,

? ?原理:htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体,如果用户试图利用 PHP_SELF 变量,会输出实体字符,使得植入的脚本无法执行

? ?& (和号) 成为 &

? ?" (双引号) 成为 "

? ?' (单引号) 成为 '

? ?< (小于) 成为 <

? ?> (大于) 成为 >

? ? ?

(2)验证表单数据

?

?

?

?

?

?

今天先写到这里,稍后继续?

.

发表评论
用户名: 匿名