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 相关文章推荐
Mysql中分页查询的两个解决方法比较
May 02 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
Mar 19 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
PHP工厂模式简单实现方法示例
May 23 PHP
PHP实现图片压缩
Sep 09 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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定时计划任务的实现方法详解
2013/06/06 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
php实现websocket实时消息推送
2018/03/30 PHP
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
node.js实现端口转发
2016/04/14 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
python实现通过shelve修改对象实例
2014/09/26 Python
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
简单了解Python生成器是什么
2019/07/02 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
机械设计制造专业个人求职信
2013/09/25 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
车辆委托书范本
2014/10/05 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
安全生产感想
2015/08/07 职场文书
护理培训心得体会
2016/01/22 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang