免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Session機制



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


前序:


首先要明白PHPSESSID看似多次刷新都不會改變其實是沒有刪除本地相關(guān)聯(lián)的cookie,刪除的方法

session_destroy();//刪除服務(wù)器端的session文件

setcookie(session_name(),'',time()-3600,'/');//刪除本地相關(guān)聯(lián)的cookie

session_unset();//清空內(nèi)存中的cookie或者是$_SESSION = array();

然后再刷新相應(yīng)的頁面你就會看到PHPSESSID會發(fā)生變化了,根據(jù)此可以得:如果session文件已經(jīng)創(chuàng)建則不重新生成PHPSESSID,否則需要重新生成,生成規(guī)則,就看下邊嘍……!



--------------------------------------------------------------------------------------------------------------------------------------

現(xiàn)在經(jīng)過測試應(yīng)該是不是檢測session文件是否存在,而是檢測PHPSESSID的cookie是否存在并且是否未過期!特此更正!

------------------------------------------------------------------------------------------------

可能PHP開發(fā)者心中多少都思考過這么兩個問題:

種植在客戶端瀏覽器中的PHPSESSIONID會出現(xiàn)重復(fù)嗎?
PHPSESSIONID安全性如何,有沒可能被黑客輕易的仿造呢?
帶上這個問題,我稍微注意了一下PHP的源碼后,疑問也就有了答案。

PHP在使用默認的 session.save_handler = files 方式時,PHPSESSIONID的生產(chǎn)算法原理如下:


hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客戶端IP + 當(dāng)前時間(秒)+ 當(dāng)前時間(微妙)+ PHP自帶的隨機數(shù)生產(chǎn)器)

從以上hash_func(*)中的數(shù)據(jù)采樣值的內(nèi)容分析,多個用戶在同一臺服務(wù)器時所生產(chǎn)的PHPSESSIONID重復(fù)的概率極低(至少為百萬份之一),設(shè)想,但臺動態(tài)Web Server能到2000/rps已經(jīng)很強悍了。

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

以下是截取PHP源碼中PHPSESSIONID實現(xiàn)片段:

gettimeofday(&tv, NULL);

if (
zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &array) == SUCCESS &&
Z_TYPE_PP(array) == IS_ARRAY && zend_hash_find(Z_ARRVAL_PP(array), "REMOTE_ADDR", sizeof("REMOTE_ADDR"), (void **) &token) == SUCCESS)
{
remote_addr = Z_STRVAL_PP(token);
}


spprintf(&buf, 0, "%.15s%ld%ld%0.8F", remote_addr ? remote_addr : "", tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);

switch (PS(hash_func))
{
case PS_HASH_FUNC_MD5:
PHP_MD5Init(&md5_context);
PHP_MD5Update(&md5_context, (unsigned char *) buf, strlen(buf));
digest_len = 16;
break;
case PS_HASH_FUNC_SHA1:
PHP_SHA1Init(&sha1_context);
PHP_SHA1Update(&sha1_context, (unsigned char *) buf, strlen(buf));
digest_len = 20;
break;
default:
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid session hash function");
efree(buf);
return NULL;
}

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ipsec密鑰交換
Python讀取大文件的“坑“與內(nèi)存占用檢測
NotePad++ 使用 DBGp 調(diào)試php
群暉NAS安裝KodExplorer文件管理器(域名綁定 外網(wǎng)訪問)
什么叫給密碼“加鹽”?如何安全的為你的用戶密碼“加鹽”?
PHP漏洞函數(shù)總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服