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定时自动生成静态HTML的实现代码
Jun 20 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
6个超实用的PHP代码片段
Aug 10 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
PHP中trait使用方法详细介绍
May 21 PHP
基于PHP实现的多元线性回归模拟曲线算法
Jan 30 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP依赖注入原理与用法分析
Aug 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
用PHP动态创建Flash动画
2006/10/09 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
详解Python中的Cookie模块使用
2015/07/06 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
python requests指定出口ip的例子
2019/07/25 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
银行求职信个人范文
2013/12/16 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
计算机软件专业求职信
2014/06/10 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
500字小学生检讨书
2015/02/19 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript