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 11 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
PHP实现的浏览器检查类
Apr 11 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
php并发加锁示例
Oct 17 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
Smarty模板变量与调节器实例详解
Jul 20 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
phpmail类发送邮件函数代码
2012/02/20 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php发送post请求的三种方法
2014/02/11 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
原生js实现3D轮播图
2020/03/21 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python中的多重装饰器
2015/04/11 Python
Python代码实现KNN算法
2017/12/20 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
python在文本开头插入一行的实例
2018/05/02 Python
python3.5绘制随机漫步图
2018/08/27 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
旅游项目开发策划书
2014/01/18 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
2015年超市工作总结
2015/04/09 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers