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开发大型项目的一点经验
Oct 09 PHP
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
简单采集了yahoo的一些数据
Feb 14 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
php文件包含的几种方式总结
Sep 19 PHP
PHP常用函数之格式化时间操作示例
Oct 21 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
使用php4加速网络传输
2006/10/09 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
python实现ipsec开权限实例
2014/11/11 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
python3.5绘制随机漫步图
2018/08/27 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
《雨点》教学反思
2014/02/12 职场文书
施工员岗位职责
2014/03/16 职场文书
作文评语集锦大全
2014/04/23 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
公司文体活动总结
2015/05/07 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers