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 Squid中可缓存的动态网页设计
Sep 17 PHP
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
深入分析php之面向对象
May 15 PHP
php获取系统变量方法小结
May 29 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
php数据序列化测试实例详解
Aug 12 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 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
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
python实现网页录音效果
2020/10/26 Python
优秀共产党员先进事迹
2014/01/27 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2015年班组长工作总结
2015/04/10 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers