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 相关文章推荐
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
PHP 调试工具Debug Tools
Apr 30 PHP
PHP explode()函数用法、切分字符串
Oct 03 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
PHP异步进程助手async-helper
Feb 05 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 PHP
php微信开发之谷歌测距
Jun 14 PHP
php支付宝APP支付功能
Jul 29 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
joomla内置的表单验证功能使用方法
2010/06/11 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
python去除所有html标签的方法
2015/05/05 Python
Python脚本暴力破解栅栏密码
2015/10/19 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
python中threading开启关闭线程操作
2020/05/02 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
本科生职业生涯规划书范文
2014/01/21 职场文书
美德好少年主要事迹
2014/01/29 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
加强作风建设工作总结
2014/10/23 职场文书
邀请函格式范文
2015/02/02 职场文书
手机销售员岗位职责
2015/04/11 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
礼貌问候语大全
2015/11/10 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python