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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
php实现删除指定目录下相关文件的方法
Oct 20 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
PHP区块查询实现方法分析
May 12 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的图形函数中显示汉字
2006/10/09 PHP
PHP6 mysql连接方式说明
2009/02/09 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP PDO函数库详解
2010/04/27 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
web 页面分页打印的实现
2009/06/22 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python登录注册验证功能实现
2018/06/18 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
给酒店员工的表扬信
2014/01/11 职场文书
总经理司机岗位职责
2014/02/06 职场文书
接待员岗位职责
2015/02/13 职场文书
安全保证书格式
2015/02/28 职场文书
个人优缺点总结
2015/02/28 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
Python保存并浏览用户的历史记录
2022/04/29 Python