乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Session機(jī)制

       WindySky 2018-02-07



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


      前序:


      首先要明白PHPSESSID看似多次刷新都不會(huì)改變其實(shí)是沒有刪除本地相關(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)的頁面你就會(huì)看到PHPSESSID會(huì)發(fā)生變化了,根據(jù)此可以得:如果session文件已經(jīng)創(chuàng)建則不重新生成PHPSESSID,否則需要重新生成,生成規(guī)則,就看下邊嘍……!



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

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

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

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

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

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


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

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

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

      以下是截取PHP源碼中PHPSESSIONID實(shí)現(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;
      }

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多