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 is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
PHP 图像尺寸调整代码
May 26 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
PHP批量删除jQuery操作
Jul 23 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
Laravel框架路由管理简单示例
May 07 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 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实现网站插件机制的方法
2009/11/10 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
新年寄语大全
2014/04/12 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
个人考核材料
2014/05/15 职场文书
常务副总经理任命书
2014/06/05 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
服务行业标语口号
2015/12/26 职场文书
《花钟》教学反思
2016/02/17 职场文书