亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁/技術文章
文章詳情頁

PHP Session ID的實現(xiàn)原理與實例

瀏覽:89日期:2022-09-07 14:14:50
Session作用

Session的根本作用就是在服務端存儲用戶和服務器會話的一些信息。典型的應用有:1、判斷用戶是否登錄。2、購物車功能。

session 的工作機制:

為每個訪問者創(chuàng)建一個唯一的 id (UID),并基于這個 UID 來存儲變量。UID 存儲在 cookie 中,亦或通過 URL 進行傳導。

PHPSESSIONID的生產(chǎn)算法原理:

1、hash_func = md5 / sha1 #可由php.ini配置

2、PHPSESSIONID = hash_func(客戶端IP + 當前時間(秒)+ 當前時間(微妙)+ PHP自帶的隨機數(shù)生產(chǎn)器)

從以上hash_func(*)中的數(shù)據(jù)采樣值的內(nèi)容分析,多個用戶在同一臺服務器時所生產(chǎn)的PHPSESSIONID重復的概率極低。

另外,黑客如果要猜出某一用戶的PHPSESSIONID,則他也必須知道“客戶端IP、當前時間(秒、微妙)、隨機數(shù)”等數(shù)據(jù)方可模擬。

php.ini配置如下:

; http://php.net/session.hash-functionsession.hash_function=0PHP Session工作原理

以下以cookie傳輸PHPSESSID描述。

1、客戶端請求一個php的服務端地址。

2、服務端收到請求,此次php腳本中包含session_start()。

3、服務端會生成一個PHPSESSID。(默認session存儲方式為session.save_handler=files,文件形式存儲。生成的session文件名規(guī)則即為sess_PHPSESSID,session文件存在session.save_path中。)

4、服務端響應首部Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50; path=/。在客戶端生成一個cookie保存此PHPSESSID。

5、此時,客戶端的cookie里面包含了PHPSESSID,之后客戶端的每次請求首部Request Headers:Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50。服務端之后每次接收到客戶端的請求就都能根據(jù)這個PHPSESSID來找到服務端的session文件,通過對這個session文件的讀寫操作即實現(xiàn)了session的超全局變量屬性。

如果客戶端禁用了cookie,由于無法使用cookie傳遞PHPSESSID,那么客戶端每次請求,服務端都會重新建立一個session文件,而無法通過通過PHPSESSID來重用session文件,所以session也就失效了。

這種情況可以設置session.use_trans_sid來傳輸PHPSESSID,具體實現(xiàn)方式與cookie的區(qū)別就是將PHPSESSID通過HTTP的GET傳輸。

session.use_cookies = 0 //設置客戶端是否使用cookie來保存session值 該參數(shù)的值不影響上述機制的進行。

但是為了驗證該機制,這里把該參數(shù)設為0,排除cookie攜帶seesionid的可能

session.use_only_cookies = 0 //是否只使用cookie來保存session值 該參數(shù)為1時,上述機制失效。

設置session.use_trans_sid = 1或者編譯時打開打開了--enable-trans-sid每次請求的地址里面都會補全PHPSESSID參數(shù)”url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50”來實現(xiàn)。

PHPcli模式通過session_id()使用session

可以通過它來獲取當前會話的PHPSESSID,也可以通過它來設置當前的會話PHPSESSID。

PHPcli模式下可以通過設置這個,達到使用session的目的,非常方便。

例如:

<?php// session_id(’vingbrv8m64asth0nhplu9gmb7’);session_start();$_SESSION[md5(rand(100,999))] = rand(100,999);var_dump($_SESSION);Session實例問題

現(xiàn)有系統(tǒng)A,B; 假設A系統(tǒng)是可以獨立運行的web系統(tǒng),即可以和瀏覽器直接處理session, B系統(tǒng)是基于mobile的,需要調(diào)用A系統(tǒng)的功能接口,

在保持A不改變的情況下,即登陸驗證,session存儲都不變的情況下,B系統(tǒng)能處理前端用戶的請求。

這里提供的方案是使用PHP實現(xiàn)

在用戶登陸成功后,將保存的session的session-id返回給B系統(tǒng),然后B系統(tǒng)每次請求其他接口都帶session_id。

A系統(tǒng)在session_start前加上session_id(session_id);

這樣B系統(tǒng)就能安全的調(diào)用A

session安全問題

再聊下session_id吧,它是保存在cookie中,首先session是一個只要活動就不會過期的東西,只要開啟cookie,每一次會話,session_id都不會改變,我們可以根據(jù)session_id來判斷用戶是否是正常登陸,防止用戶偽造session。然后我們也要防止session被劫持,我們可以對session_id進行再一次的加密,防止暴力破解,還有可以設置HttpOnly。通過設置Cookie的HttpOnly為true,可以防止客戶端腳本訪問這個Cookie,從而有效的防止XSS攻擊。

以上就是PHP Session ID的實現(xiàn)原理與實例的詳細內(nèi)容,更多關于PHP Session ID的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: PHP
相關文章:
主站蜘蛛池模板: 久久一本久综合久久爱 | 亚州三级| 黄在线网站 | 免费看在线偷拍视频 | 色综合加勒比 | 麻豆自拍 | 日韩精品一区二区在线观看 | 国产成人精品综合在线观看 | 欧美日本亚洲国产一区二区 | 国产精品搭讪系列在线观看 | 亚洲国产精品线观看不卡 | 天天色播 | 99re在线精品视频免费 | 一区二区三区视频观看 | 欧洲一级毛片免费 | 黄色片免费看视频 | 欧美日韩国产在线观看 | 日韩欧美一区二区三区免费看 | 毛片一级做a爰片性色 | 亚洲国产激情在线一区 | 亚洲三级精品 | 天堂亚洲国产日韩在线看 | 日本美女视频韩国视频网站免费 | 国产高清在线免费视频 | 国产成人高清精品免费观看 | 亚洲欧美国产另类 | 国产精品伦理久久久久 | 免费国产在线观看 | 日本在线观看一级高清片 | 欧美呦女| 中文字幕极速在线观看 | 欧美大片天天免费看视频 | 色拍999 | 日本高清免费不卡视频 | 国产亚洲精品久久久久久午夜 | 国产一级淫片a免费播放口欧美 | 午夜三级毛片 | 不卡一级毛片免费高清 | 日韩欧美成人乱码一在线 | 超级最爽的乱淫片免费 | 青青青国产观看免费视频 |