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中路径问题的解决方案
Oct 09 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
PHP实现多图片上传类实例
Jul 26 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
php筛选不存在的图片资源
Apr 28 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 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
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
php图片上传类 附调用方法
2016/05/15 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
Prototype RegExp对象 学习
2009/07/19 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
php跨域调用json的例子
2013/11/13 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
django创建简单的页面响应实例教程
2019/09/06 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
通过代码实例了解Python sys模块
2020/09/14 Python
python 字符串格式化的示例
2020/09/21 Python
如何在pycharm中安装第三方包
2020/10/27 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
生物科学专业职业规划书范文
2014/02/11 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
作文评语集锦
2014/12/25 职场文书
高考学习决心书
2015/02/04 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python