现在还剩下什么问题呢?远程表单提交。

远程表单提交

Web 的好处是可以分享信息和服务。坏处也是可以分享信息和服务,因为有些人做事毫无顾忌。

以 表单为例。任何人都能够访问一个 Web 站点,并使用浏览器上的 File > Save As 建立表单的本地副本。然后,他可以修改 action 参数来指向一个完全限定的 URL(不指向 formHandler.php,而是指向 http://www.yoursite.com/formHandler.php,因为表单在这个站点上),做他希望的任何修改,点击 Submit,服务器会把这个表单数据作为合法通信流接收。

首先可能考虑检查 $_SERVER[’HTTP_REFERER’],从而判断请求是否来自自己的服务器,这种方法可以挡住大多数恶意用户,但是挡不住最高明的***。这些人足够聪明,能够篡改头部中的引用者信息,使表单的远程副本看起来像是从您的服务器提交的。

处理远程表单提交更好的方式是,根据一个惟一的字符串或时间戳生成一个令牌,并将这个令牌放在会话变量和表单中。提交表单之后,检查两个令牌是否匹配。如果不匹配,就知道有人试图从表单的远程副本发送数据。

要创建随机的令牌,可以使用 PHP 内置的 md5()、uniqid() 和 rand() 函数,如下所示:

清单 18. 防御远程表单提交

session_start();

if ($_POST[’submit’] == “go”){

//check token

if ($_POST[’token’] == $_SESSION[’token’]){

//strip_tags

$name = strip_tags($_POST[’name’]);

$name = substr($name,0,40);

//clean out any potential hexadecimal characters

$name = cleanHex($name);

//continue processing….

}else{

//stop all processing! remote form posting attempt!

}

}

$token = md5(uniqid(rand(), true));

$_SESSION[’token’]= $token;

function cleanHex($input){

$clean = preg_replace(”![\][xX]([A-Fa-f0-9]{1,3})!”, “”,$input);

return $clean;

}

?>

” method=”post”>

Name

”/>

这种技术是有效的,这是因为在 PHP 中会话数据无法在服务器之间迁移。即使有人获得了您的 PHP 源代码,将它转移到自己的服务器上,并向您的服务器提交信息,您的服务器接收的也只是空的或畸形的会话令牌和原来提供的表单令牌。它们不匹配,远程表单提交就失败了。

转载于:https://blog.51cto.com/tommike/1190489

php过滤提交数据 防止sql注入***(8)相关推荐

  1. php过滤提交数据 防止sql注入攻击

    php过滤提交数据 防止sql注入攻击 在SQL注入攻击 中,用户通过操纵表单或 GET 查询字符串,将信息添加到数据库查询中.例如,假设有一个简单的登录数据库.这个数据库中的每个记录都有一个用户名字 ...

  2. php sql语句过滤,PHP过滤用户提交信息(防SQL注入)

    请求层面的过滤 在 request 层面 我们可能要做的是如何防止非法html 的标签的提交, 例如 SQL层面的控制 –什么是SQL注入 如果用户传入的参数 需要用于构造sql 语句的话 那么我们就 ...

  3. php mysql防注入字符串过滤_php中防止SQL注入的方法

    最好对magic_quotes_gpc已经开放的情况下,还是对$_POST['lastname']进行检查一下. 再说下mysql_real_escape_string和mysql_escape_st ...

  4. mysql-查询演练-商城查询-数据修改-sql注入及防范

    目标 通过python来操作数据库 写一个类,封装常用的一些方法 架构 >基本架构 >提示用户,并提供分支处理函数 查询功能 >查询所有商品的方法 >缺什么就补什么 >查 ...

  5. 网络安全篇(数据表单的创建 SQL命令拾遗 数据的SQL注入的防护)

    SQL注入五孔不入,尽管是老技术了,但是依然是重点防护的手段,更多的需要我们数据库开发者细心!! 数据表的演练 1 创建数据表 create database jing_dong charset=ut ...

  6. 【Web安全】绕过WAF过滤-利用cookie进行SQL注入

    文章目录 1 靶场分析 1.1 找到可能与数据库交互的模块 1.2 尝试注入 2 GET,POST传值 3 ModHeader绕WAF 1 靶场分析 1.1 找到可能与数据库交互的模块 HERE 进入 ...

  7. java filter注入_如何使用Filter过滤请求中的SQL注入攻击

    在doFilter方法中编写判断逻辑 public void doFilter(ServletRequest request, ServletResponse response, FilterChai ...

  8. 24、SQL注入是什么,如何避免SQL注入?

    SQL 注入(SQL Injection)是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞.主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用 ...

  9. 【CyberSecurityLearning 55】SQL注入

    目录 SQL 简介 SQL注入基础 漏洞原理 漏洞危害 分类 MYSQL相关 @注释 @mysql 元数据数据库information_schema @ mysql常用的函数与参数(★) @逻辑运算 ...

最新文章

  1. 吾八哥学Python(四):了解Python基础语法(下)
  2. JS控制HTML元素的显示和隐藏
  3. 网站微信登录授权 ASP.NET
  4. 【UI】android如何绘制一个饼图
  5. 善用Object.defineProperty巧妙找到修改某个变量的准确代码位置
  6. linux查看每个文件夹占空间大小
  7. Shiro实战hello
  8. 增强 扫描王 源码_BlueScan:一款功能强大的蓝牙扫描器
  9. mysql与php的连接_PHP与Mysql的连接
  10. mac OSX 上 brew install hive
  11. python超市管理系统流程图_python实现超市管理系统(后台管理)
  12. 2022考研计算机-软件工程教程
  13. 绿色自适应网址发布页html源码
  14. html5s做表单,5S推行手册表单.doc
  15. 虚拟机CentOS-7修改ip地址
  16. SPSS进行问卷数据的效度分析及结果解读(问卷数据统计分析第3步(转载)
  17. 注释一下blk_update_request函数
  18. 全新在线制作banner网站广告横幅源码
  19. 打开方式怎么用计算机程序,打开方式怎么还原?打开方式还原方法步骤
  20. 凤舞丹心东方美,中华才女竞风采 ——黛兰娜杯《中华才女大赛》七月汇演

热门文章

  1. VTK:可视化之Wireframe
  2. VTK:图片之ImageGaussianSmooth
  3. VTK:图片之ImageToStructuredPoints
  4. OpenCV PCA提取对象的方向的实例(附完整代码)
  5. OpenCV bgfg分割的实例(附完整代码)
  6. OpenCV在图像上添加边框borders
  7. C++Pascal‘s Triangle杨辉三角的实现算法
  8. QT实现太阳系系统八大行星
  9. QT的QMaterial类的使用
  10. C语言与C++的区别,从7个角度来区分C语言与C++