php语言流程控制中的主动与被动


Posted in PHP onNovember 05, 2012

这一年来,广大的phper都在辛勤劳作, 比如淘宝改版, 云计算, 腾讯开放平台, 网游, 这些作品少不了phper的功劳, 相信php语言可以继续领先行业10年, 我们憧憬未来50年, 100年, php仍然如此叱咤风云. 我们都是渺小的一员, 除了会php, 其它也就不精, 难以为生. 大家都作努力吧.

什么是主动与被动. 举个例子吧. 你跑去boss办公室要求要加工资, 这就是主动, 无论是从你自身角度来看, 还是boss角度来看, 你都是主动的, 是积极乐观的一面. 假如boss让你去办公室, 然后让你把淘宝架构出来, 给你涨20%工资, 这就叫被动. 相信承诺了你就被动. 主动与被动简单就这样理解. 而程序流程中也会碰到如此难堪的主动与被动问题. 我们看示例.

A clier
当buy qq购买商品成功后, 通知QQ主服务器. 通过http协议.
file_get_contents('http://www.qq.com/api.php?add_saleinfo=buy_qq&orderid=12345&pay=888&email=a@qq.com');

代码运行在buy.qq.com上面, 理解上来说是安全的, 但事实呢? 假如某人散发了此接口, 后果将不可估计. 人人都可以伪造订单信息植入到qq.com. 无论你是如何限制来路, 数据检查. 退一万步, 危险的是写这代码的人. 那大家都会问, 既然是写代码的人, 权限已经很大,怎么防止得了? 这就需要由被动(qq.com) 变主动. http://www.qq.com/api.php?add_saleinfo=buy_qq修改成不再接收任何的订单信息. 而是token值. 收到token值后, 接口回调buy.qq的查询接口, 然后再入库. 普通用户再也创造不出token值, 就算知道buy.qq的查询接口, 也不可能影响到qq.com, 作为主体qq.com 基本上属于主动, 不会时刻在混乱入库, 而是主动分析, 思考入库.

道理相同, 淘宝客玩家也有这个问题. 比如以前暴出来的部分浏览器修改网页中的pid值, 让用户损失惨重. 这就是被动的结果. php是这样写的, php 请求淘宝api接口,接收到商品信息, 里面就有商品购买链接, 正正是这个购买链接让站长变成了被动. 在页面直接href这个链接的用户都有可能被人采集, 被浏览器修改pid. 接下来, 你是懂的, pid代表金钱. 后期有人已经想到了这个问题, 就采取了被动变主动的做法, 防止bug产生. 就是将商品链接不直接显示, 而通过一个php修改. 用户看到的url类似: www.qq.com/tao/buy.php?sid=aaaa333 sid肯定不是pid值, 所有工作都由buy.php来承载, 主动承担分析及安全检测工作.

QQ 互联2.0 目前已经广泛应用在互联网站点上, 作为用户数据主心的graph.qq.com如何保障用户安全呢? 在保障访问速度的前提下也要完善安全. QQ登录目前的流程如下: 首先由appid appkey callbackurl组合成一串链接, 然后跳转到qq.com. 这就是为什么许多站点直接访问 qqlogin.php就能够跳转到qq登录页, 因为这参数都是固定的, 安全性还算可以. 登录过程仍然在qq.com, 这就是phper经常谈到的单点登录. 登录成功后会直接跳到callbackurl页上, callbackurl此时得到的信息仍然不足以证明用户登录成功了, 仅仅得到了token值, 所以进入第二步, 用token值去qq api接口上查询用户openid, 完成登录. 这样, QQ就得主动, 查询结果并不简单是成功与否, 而是相应的参数及提示信息, 无论后期如何增加, 都可以兼容. 腾讯掌握着主动权, 这对于上亿用户量的企业来说是非常重要的. 内部安全还有判断域名与appid对应, token过期检查, ip限制. 技术层面来看腾讯是有的.

这样例子很多, paypal, 支付宝,都是类似的道理.

PHP 相关文章推荐
一个程序下载的管理程序(一)
Oct 09 PHP
关于mysql 字段的那个点为是定界符
Jan 15 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
php解析url的三个示例
Jan 20 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
PHP里的单例类写法实例
Jun 25 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
PHP编码转换
Nov 05 #PHP
php从数组中随机抽取一些元素的代码
Nov 05 #PHP
PHP关联链接常用代码
Nov 05 #PHP
php中计算程序运行时间的类代码
Nov 03 #PHP
php教程 插件机制在PHP中实现方案
Nov 02 #PHP
PHP类与对象中的private访问控制的疑问
Nov 01 #PHP
php类中private属性继承问题分析
Nov 01 #PHP
You might like
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
详解Python的Django框架中的templates设置
2015/05/11 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
python向图片里添加文字
2019/11/26 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
采购员岗位职责
2013/11/15 职场文书
补充协议书范本
2014/04/23 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
HTML中的表单元素介绍
2022/02/28 HTML / CSS