HTML 表单数据进行适当的验证对于防范黑客和垃圾邮件很重要!
---------------------------------------------------------------------------------------------------------------------------
首先,用户信息等表单处理最好选用 POST方式

$_GET 是通过 URL 参数传递到当前脚本的变量数组。 $_POST 是通过 HTTP POST 传递到当前脚本的变量数组。
[1]通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,可把页面添加到书签中。
[2]通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。 不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。

其次,最好对表单进行验证处理:
例如 某个表单的验证:
<span style="font-size:14px;"><form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
</span>

$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。 因此,$_SERVER["PHP_SELF"] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
$_SERVER["PHP_SELF"] 变量能够被黑客利用! 如果您的页面使用了 PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS),XSS 能够使攻击者向其他用户浏览的网页中输入用户脚本。
如果用户进入的是地址栏中正常的 URL:
这些代码
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

就会转换为:

<form method="post" action="test_form.php">

但假如用户输入URL:

代码就会转换成:
<span style="font-size:14px;"><form method="post" action="test_form.php"/><script>alert('hacked')</script>
</span>

这段代码加入了一段脚本和一个提示命令,并且当此页面加载后,就会执行 JavaScript 代码.黑客能够把用户重定向到另一台服务器上的某个文件,该文件中的恶意代码能够更改全局变量或将表单提交到其他地址以保存用户数据,等等
为了避免 $_SERVER["PHP_SELF"] 被利用,用 htmlspecialchars() 函数--把特殊字符转换为 HTML 实体,如下所示:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

在使用此函数后,假如用户在文本区域输入:

但代码不会执行,因为会被保存为转义代码

当然了,数据被处理了,也要处理回来

在用户提交该表单时,我们还要做两件事: (通过 PHP trim() 函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行) (通过 PHP stripslashes() 函数)删除用户输入数据中的反斜杠(\)

如下例子所示,最后 $the_name 即为表单中name多次处理后的值

<?php
$the_name = "";if ($_SERVER["REQUEST_METHOD"] == "POST") {$data = $_POST["name"];$data = trim($data);$data = stripslashes($data);$data = htmlspecialchars($data);$the_name = $data;}
?>

--------------------终于知道了黑客们攻击网站盗取数据的某个方式,建站时多多注意吧..----------------------------

转载于:https://www.cnblogs.com/imwtr/p/4069136.html

PHP 表单验证--安全性--小记相关推荐

  1. 使用Spring 3 MVC处理表单验证

    本文是有关Spring 3的系列文章的一部分.该系列的早期文章是使用Spring 3 MVC的Hello World和使用Spring 3 MVC的 Handling Forms . 现在让我们更深入 ...

  2. php form validator 下单,PHP Form表单验证:PHP form validator使_php

    在php网站开发建设中,用户注册.留言是必不可少的功能,用户提交的信息数据都是通过Form表单提交,为了保证数据的完整性.安全性,PHP Form表单验证是过滤数据的首要环节,PHP对表单提交数据的验 ...

  3. 【转】ASP.NET 表单验证实现浅析

    对于Web应用的表单身份验证,因为公司有一个类库,采用 Session 实现,所以一直都没有去仔细了解.其实我并不赞成在 .NET 中用 Session 实现身份验证,毕竟 .NET 提供了一个强大的 ...

  4. 雷林鹏分享:PHP 表单验证

    PHP 表单验证 在处理PHP表单时我们需要考虑安全性. 本章节我们将展示PHP表单数据安全处理,为了防止黑客及垃圾信息我们需要对表单进行数据安全验证. 在本章节介绍的HTML表单中包含以下输入字段: ...

  5. 表单验证设计的用户体验基本原则

    转自:http://www.oschina.net/translate/ux-form-validation?from=20130331 英文原文:The Ultimate UX Design of ...

  6. HTML表单验证(含用户名,密码,邮箱,手机号,验证码-验证)

    HTML表单验证(含用户名,密码,邮箱,手机号,验证码) 前几天对表单注册有点感兴趣,于是在课余时间了解了一些注册表单的验证方法,自己也试着做了一个表单的验证(前端验证),很low,各位童鞋应该都看得 ...

  7. Asp.net Authenticatiion Authorization(认证与授权)——表单验证

    本文大量摘抄 asp.net Forms表单验证 使用经验及验证流程分析 尽管使用Asp.net做过几个简单项目,但是一直没有真正理解认证和授权这一块是怎么回事.打开vs 2015/2017的模板,却 ...

  8. 12个方便易用的jquery表单验证插件

    绝大部分网站都是开放注册的,而注册就需要使用表单验证,因为网站都需要对注册用户的信息安全性和合理性做出判断,表单的注册都应该具备完善的验证方式,比如注册使用的手机号是否是真实的?用户填写的验证码是否正 ...

  9. [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解

    模板布局 公共部分通常定义为模板布局:如页眉,页脚,公共导航栏.菜单等. 模板布局定义方法 布局页中用 th:fragment 定义模板片段,其他页面用 th:insert 引用片段 例如:foote ...

最新文章

  1. 无厘头的mysql故障排除
  2. IBM与HP存储数据复制技术PK
  3. 如何修改SAP登录界面的文字
  4. [2018/11/14] 学习的思考
  5. Advanced Bash-Scripting Guide 学习笔记一
  6. Asp.net TextBox常规输入验证
  7. ActiveBpel部署运行BPEL流程实例
  8. __gnu_cxx::hash_map使用中的一些问题
  9. Android新增输入设备
  10. xp系统的计算机设置在哪里,请问在XP系统中怎样设置输入法
  11. 基于SSH的客户关系管理系统
  12. 图像处理R包magick学习笔记
  13. 极域电子教室师生端连接不上怎么解决
  14. three.js 法线贴图
  15. kindle亚马逊个人文档不显示_Kindle个人文档服务
  16. 北新建材被授予“亚洲最大石膏板产业集团”硅钙板吊顶
  17. 纪录片:《独立游戏大电影》
  18. PAT 乙级 1033 旧键盘打字 python
  19. GD32F450,CAN1收发数据总结
  20. sudo pycharm error:Can‘t connect to X11 window server using ‘localhost:12.0‘ as the value of

热门文章

  1. android中static方法,StaticLayout如何在Android中使用?
  2. linux查看网卡物理编号_Linux下多网卡时,如何快速辨别网卡ID与物理网卡的对应关系(即ethtool命令)...
  3. python文字冒险游戏_模拟射击文字类游戏(Python)
  4. mac idea用自带的maven还是_免费版的 IDEA 为啥不能使用 Tomcat ?
  5. Unity制作游戏中的场景
  6. c4d完全学习手册_动态视觉设计就业班,全商业项目实训,一线制作团队10人小班授课,持续提升学习...
  7. java 单线程改多线程_帮我把单线程的程序改成多线程JAVA,急!
  8. delphi dbgrid 焦点 行号_火箭VS爵士领衔,多场焦点对决!今日NBA全部比赛视频直播预告...
  9. 联想杜比音效_联想小新15 2020锐龙版首销;OPPO Find X2系列也可尝鲜安卓11
  10. 解决 win10 下载文件到某盘 没有权限