php防止伪造的数据从URL提交方法


Posted in PHP onJune 27, 2014

针对伪造的数据从URL提交的情况,首先是一个检查前一页来源的如下代码:

<?/*PHP防止站外提交数据的方法*/
function CheckURL(){
  $servername=$_SERVER['SERVER_NAME']; 
  $sub_from=$_SERVER["HTTP_REFERER"]; 
  $sub_len=strlen($servername); 
  $checkfrom=substr($sub_from,7,$sub_len); 
  if($checkfrom!=$servername)die("警告!你正在从外部提交数据!请立即终止!"); 
}
?>

这个方法只能防止手动在浏览栏上输入的URL。
事实上只要在服务器上构造出一个指向该URL的链接(比如在发贴时加入超链),再点击,这个Check就完全不起作用了。

目前觉得还是用POST的方法传递重要数据比较可靠。
可以在form中插入一些隐藏的text用于传递数据。
或者使用下面的方法,利用Ajax从客户端向服务器提交数据。

/*创建XHR对象*/
function createXHR()
{
  if (window.XMLHttpRequest){
    var oHttp = new XMLHttpRequest();
    return oHttp;
  } 
  else if (window.ActiveXObject){
    var versions = ["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];
    for (var i = 0; i < versions.length; i++){
      try {
        var oHttp = new ActiveXObject(versions[i]);
        return oHttp;
      } catch (error) {}
    }
  }
  throw new Error("你的浏览器不支持AJAX!");
}
/*用AJAX向page页面传递数据*/
function ajaxPost(url,query_string='')
{
  var xhr;
  xhr = createXHR();
  xhr.open('POST',url,false);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=gb2312");
  xhr.onreadystatechange = function(){if (xhr.readyState == 4)if (xhr.status != 200)return;}
  xhr.send(query_string);
}
PHP 相关文章推荐
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
php多任务程序实例解析
Jul 19 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
php使用curl获取https请求的方法
Feb 11 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
Zend Framework创建自己的动作助手详解
Mar 05 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
tp5框架内使用tp3.2分页的方法分析
May 05 PHP
laravel 时间格式转时间戳的例子
Oct 11 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 #PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 #PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 #PHP
php使用GeoIP库实例
Jun 27 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 #PHP
ThinkPHP模板自定义标签使用方法
Jun 26 #PHP
You might like
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
pycharm远程调试openstack代码
2017/11/21 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
python机器学习库xgboost的使用
2020/01/20 Python
python em算法的实现
2020/10/03 Python
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
门卫工作岗位职责
2013/12/17 职场文书
项目负责人岗位职责
2015/02/15 职场文书
太行山上观后感
2015/06/05 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL