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 mkdir()定义和用法
Jan 14 PHP
php 数组二分法查找函数代码
Feb 16 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
Mac系统下安装PHP Xdebug
Mar 30 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
附件名前加网站名
2008/03/23 PHP
mysql limit查询优化分析
2008/11/12 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
浅析php学习的路线图
2013/07/10 PHP
php json与xml序列化/反序列化
2013/10/28 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python 类的特殊成员解析
2018/06/20 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
优质护理服务演讲稿
2014/05/07 职场文书
新闻学专业求职信
2014/07/28 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2015年度党员个人总结
2015/02/14 职场文书
公路施工安全责任书
2015/05/08 职场文书
家长会主持词开场白
2015/05/29 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers