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 数组实例说明
Aug 18 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
PHP中把stdClass Object转array的几个方法
May 08 PHP
PHP的引用详解
Feb 22 PHP
PHP开发Apache服务器配置
Jul 15 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
php加密解密字符串示例
Oct 13 PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
php实现的生成排列算法示例
2019/07/25 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
python安装与使用redis的方法
2016/04/19 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
文案策划求职信
2014/04/14 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python