セッション-垞に必芁ですか

セッションを䜿甚しおナヌザヌを認蚌するずいうトピックをもう䞀床取り䞊げたいず思いたす。 蚘事の䞭で䞎えられた方法に察する批刀を、あなたの経隓の高さから聞きたいず思いたす。







PHPでのセッションのすべおの思慮深さず優れた実装にもかかわらず、ほずんどの開発者は遅かれ早かれ暙準機胜を拡匵/倉曎する必芁に盎面したす。 察凊すべき重芁なポむントは次のずおりです。

  1. セッション固定。 セッションの盗難から保護するために、sessidは次の情報を特城ずしおいたす。

    ナヌザヌ。 通垞、IPたたはUserAgent、たたはすべお䞀緒です。



    あなたのsession_set_save_handler。 セッション倉数をファむルシステムに保存するのは最適な゜リュヌションではないため、

    遅かれ早かれ、セッションをmemcached、ベヌス、たたは他の堎所に転送するこずを怜蚎する必芁がありたす。



    session.use_trans_sid =0。PHPに組み蟌たれおいるurl_rewriterメカニズムは非垞に匷力で䟿利なものですが、

    セッションでそれを䜿甚するず、䞀連の䞍快な瞬間がありたす。 必死の怜玢゚ンゞン、いリンク、

    停名で入力、完党に無関係なサむトのログにsessidを「ラむトアップ」HTTP_REFERER経由など

    したがっお、この機胜は通垞無効になっおおり、sessidの送信にはCookieのみが䜿甚されたす。





    最埌のポむントに぀いお詳しく説明したいず思いたす。 事実、ほずんどの倧芏暡なサむトは

    google、ozon、livejournal、paypal ..Cookieを介しおのみ機胜したす。 ずおも奇劙に思えた

    Cookieを持たない人々がむンタヌネット䞊で非垞にたれであり、無芖される可胜性は䜎いためです。



    Liveinternetの統蚈によるず、Cookieが無効になっおいる人の数は玄4です。

    少なからず。 少なくずもこのような巚人が芳客のこの郚分を意識的に遮断する可胜性は䜎い

    非垞に良い理由がなければなりたせんでした。 そしお、圌らは芋぀かりたした。



    これらの4には、氞続的なCookieを持っおいない人が含たれおいるこずがわかりたす

    ハヌドセットラむフタむムを䜿甚、セッションセッションは機胜したす-ラむフタむム= 0 たた、セッションCookieはほずんどすべおのナヌザヌに有効です。

    セキュリティ蚭定やlynxで「Cookieを無効にする」蚭定をしおいる人でも。 :)



    ずにかく、100の保蚌が䞎えられないこずは明らかです。 たずえば、Cookieがファむアりォヌルを切断する可胜性がありたすただし、これも䞍明です

    lifetime = 0でカットしたす。 ナヌザヌは、Cookieのサポヌトなしで自䜜のブラりザを䜿甚できたす。

    䟋真珠のクロヌラヌ。 しかし、あなたは他に䜕を知らない...



    しかし、私自身の経隓から刀断するずそしお「䞊玚の同志」の経隓は間接的にこれを確認したす、私は実際にはそれが可胜であるず蚀いたす

    ナヌザヌがセッションCookieを持っおいるこずを期埅しおも安党です。 たた、この論文を支持しお

    PHPのデフォルトでは、session.use_only_cookiesパラメヌタヌは1に蚭定されおいたす。 Cookieを持たないナヌザヌの堎合、セッションは機胜したせん。



    たた、通垞はセッションが䜿甚されるほずんどの堎所でCookieのサポヌトに頌るこずができるため、実際にはCookieを介しお物事をより簡単で䟿利にするこずができ、同時にすべおのケヌスで機胜したす。

    セッションずしお。 なぜ私は簡単に蚀っおいるのですか Cookieがスロヌされたため、忘れおしたったため、手動で凊方する必芁はありたせん。

    ヘッダヌ堎所..、Ajaxを䜿甚する際に芚えおおく必芁はありたせん。

    このリク゚ストがスクリプト、静的html、画像、たたはcssのどれを参照しおいるか。 セッションは次の堎合にのみ忘れられたす。

    同じCookieを介しお機胜する堎合、そしお垞にそうずは限りたせん。 :)



    ここで、独自のsession_set_save_handlerに぀いお少し説明したす。 もちろん、すべおはどのデヌタずどのくらいの時間に䟝存したす

    保存する必芁がありたす。 もちろん、䞀般的な堎合は、デヌタベヌスたたはファむルシステムを䜿甚する必芁がありたす。 セッションの寿呜が短い堎合、

    たた、セッション内のデヌタ自䜓は簡単に回埩でき、メモリたたはmemcachedも機胜したす。 たた、セッションが

    ナヌザヌの認蚌に぀いおは、原則ずしお、サヌバヌ偎に䜕かを保存するこずが䞀般的に必芁かどうかを怜蚎する䟡倀がありたす。

    実際、Cookieを䜿甚する堎合、save_handlerを完党に砎棄し、クラむアントからのすべおのデヌタを保存できたす。



    繰り返しになりたすが、phpbb、wordpress、gmailなどによっお残されたCookieの倧たかな研究は、このアプロヌチが非垞に䞀般的であるこずを瀺したした

    䜿甚され、生呜に察する暩利がありたす。 芚えおおくべき唯䞀のこずは、クッキヌは簡単に停造できるずいうこずです。

    したがっお、盲目的にそれらを信頌するこずは䞍可胜ではありたせん。



    そしお、ここでポむント1-セッション固定化に進みたす。 暙準のセッションメカニズムず同様に、

    たた、送信の可胜性を排陀するために、ナヌザヌを識別する情報にCookieをバむンドする必芁がありたす

    圌女のもう䞀぀。 さらに、ナヌザヌによる倉曎の可胜性からCookieを保護する必芁がありたす。



    セッションず同様に、サヌバヌに保存しおから調敎するこずでこれを行うこずができたす

    必芁な情報同じIPずUserAgent。

    しかし、サヌバヌには䜕も保存しないこずにしたした。 サヌバヌのメモリを䜿甚せずにこれを実行できるかどうかを芋おみたしょう。



    承認の䞀般的なケヌスを怜蚎しおください。正しいナヌザヌ名ずパスワヌドを入力するず、Cookieにナヌザヌが保存されたす

    その䞀意の識別子ID、およびサヌバヌにアクセスするたびに、この識別子によっおナヌザヌを識別したす

    ログむンを怜蚎しおください。 識別子がない堎合、たたは時間が経過した堎合、ナヌザヌにナヌザヌ名ずパスワヌドを再床芁求したす。



    ここでの欠点は䜕ですか

    1. ナヌザヌはCookie内のIDを簡単に倉曎でき、別のナヌザヌずしお認識されたす。



      ナヌザヌは、別のナヌザヌからCookieを盗み、停装するこずができたす。



      時間が経過したかどうかを刀断する方法は明確ではありたせん。 サヌバヌにタむムアりトを保存しないため、次の堎合はわかりたせん

      ナヌザヌが昚日私たちのずころに来た、たたは圌はすでに2か月間同じCookieを持っおいる。 圌がい぀ログむンしたか芚えおいない

      特にこのコンピュヌタヌから。





      ナヌザヌがCookieのデヌタを倉曎できないようにするために、デゞタル眲名を䜿甚できたす。 たずえば、md5

      秘密の蚀葉ずナヌザヌIDから。 たたは、このナヌザヌのパスワヌドから。 たたは、パスワヌドハッシュから、パスワヌド自䜓が

      デヌタベヌスに保存しないでください。 芁するに、ナヌザヌは自分自身に぀いおのみ知っおいるが、他の人に぀いおは知らないような情報が必芁です。

      自分を停装したいナヌザヌ。 たたはたったく知りたせん秘密の蚀葉。

      したがっお、蚭定するCookieは次のようになりたす。

         $ cookie = $ userid。  「|」  。  md5$ナヌザヌID。「秘密の蚀葉」;
      




      ナヌザヌが別のナヌザヌのCookieを送信できないようにするために、同じデゞタル眲名でIPを䜿甚し、

      UserAgent。

         $ cookie = $ userid。  「|」  。  md5$ナヌザヌID。「秘密の蚀葉」。   
              $ _SERVER ['REMOTE_ADDR']
      


      Cookieを受信するず、このCookieが送られおきたUserAgentずIPを䜿甚しお眲名を怜蚌したす。

      眲名が珟圚の誀った倀を䜿甚した堎合-眲名は正しくなくなり、Cookieは受け入れられたせん。



      そしお最埌に、行動の時。 最も簡単な方法は、ハンマヌを䜿甚するこずです。ナヌザヌが正しいCookieから正しいCookieを送信する間、

      IPずUserAgent-開始したす。 ただし、セッションの継続時間を匷制的に制限したい堎合は、次を远加できたす。

      Cookie自䜓の期限。 そしおたた眲名する。



         $ cookie = $ userid。  「|」  。  $時間。  「|」  。  md5
      	 $ナヌザヌID。  $時間。  「秘密の蚀葉」。 
      	 $ _SERVER ['REMOTE_ADDR']。  $ _SERVER ['HTTP_USER_AGENT']
         
      




      最終的に私たちが持っおいるものサむトに察しおナヌザヌを認蚌し、最小限の負荷を䜜成するための完党に信頌できるメカニズム

      サヌバヌに。



      持っおいないもの倚くのセッションデヌタを保存するこずはできたせん。 Cookieのサむズには制限があり、md5は長い行を食べたす

      プロセッサ時間、そしおナヌザヌが毎回このゎミをすべおやり取りするこずは䟡倀がありたせん。

      最倧長はおそらくgmailのようにする䟡倀がありたす-箄120バむト。 セッション䞭にそこに䜕を保存できるか

      「わかりたせん。」 いずれにせよ、倚くの倉数を保存する必芁がある堎合、私芋ではただ暙準を䜿甚する必芁がありたす

      䞀般的なケヌス向けに蚭蚈されたPHPセッション。

      パフォヌマンス。



      たた、珟圚開いおいるセッションの数もわかりたせん。 無制限に開くこずができたす。

      原則ずしお、そのような蚘録を保持するこずを劚げるものは䜕もありたせんが、私たち自身がサヌバヌをオフロヌドしたかったのです...



      暙準セッションを䜿甚するよりも優れおいたすが、save_handlerずsession_fixationを䜿甚したすか ここではすべおが䞀目瞭然で発生し、どこからでも介入できるずいう事実。 コヌドのシンプルさ。 たあ、スピヌド-汎甚性ず匕き換えに。



All Articles