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
phpfans留言版用到的install.php
Jan 04 PHP
PHP 操作文件的一些FAQ总结
Feb 12 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
php实现可运算的验证码
Nov 10 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
php微信公众号开发之简答题
Oct 20 PHP
PHP实现常用排序算法的方法
Feb 05 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中http_build_query 的一个问题
2012/03/25 PHP
php array的学习笔记
2012/05/10 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
Python实现单词拼写检查
2015/04/25 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
python实现汉诺塔方法汇总
2016/07/25 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python实现感知机模型的示例
2020/09/30 Python
python函数超时自动退出的实操方法
2020/12/28 Python
入学生会自荐书范文
2014/02/05 职场文书
借款协议书
2014/04/12 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
三年级学生评语大全
2014/12/26 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书