首頁  >  文章  >  後端開發  >  php語言流程控制中的主動與被動

php語言流程控制中的主動與被動

高洛峰
高洛峰原創
2016-12-01 11:18:55922瀏覽

這一年來,廣大的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_qqorderid=12345&mail 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, 支付寶,都是類似的道理. 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn