Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ управлСния сСссиями

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ сСссии

ΠœΠΎΠ΄ΡƒΠ»ΡŒ сСссии Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ хранимая сСссионная информация доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создал сСссию. НСобходимо ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСссии, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° связанных с Π½Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΡ†Π΅Π½ΠΊΠ° ваТности Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… сСссии, Π²Π°ΠΆΠ½Π° для Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠ΅Ρ€ ΠΏΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ; всС ΠΈΠΌΠ΅Π΅Ρ‚ свою Ρ†Π΅Π½Ρƒ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ приводят ΠΊ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡŽ удобства для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. НапримСр, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ, слСдуСт Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ session.use_only_cookies. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС со стороны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ПО ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° cookie, ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сСссий Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

БущСствуСт нСсколько способов ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ Π»ΠΈΡ†Π°ΠΌ. НапримСр ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ JavaScript, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии Π² URL, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², физичСский доступ ΠΊ устройству ΠΈ Ρ‚.Π΄. ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ Π»ΠΈΡ†Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСм рСсурсам, связанным с Π΄Π°Π½Π½ΠΎΠΉ сСссиСй. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии Π² URL. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° внСшний сайт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ адрСс рСсурса ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² статистику ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ сайта. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π°Ρ‚Π°ΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅ сСтСвого Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠΌ. Если ΠΊΠ°Π½Π°Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ сСссии Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ простого тСкста. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ использованиС SSL/TLS ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΏΡ€ΠΈ доступС ΠΊ сайту. Для этих Ρ†Π΅Π»Π΅ΠΉ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ HSTS.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π”Π°ΠΆΠ΅ HTTPS ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, уязвимости Ρ‚ΠΈΠΏΠ° CRIME, BEAST ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. МногиС сСти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ прокси HTTPS MITM для Π°ΡƒΠ΄ΠΈΡ‚Π°. ΠΡ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ прокси.

НСадаптивноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями

Π’ настоящСС врСмя PHP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. АдаптивноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями нСсёт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ риски.

Если session.use_strict_mode Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сохранСния сСссии это ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚, Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ сСссионный ID отвСргаСтся ΠΈ создаётся Π½ΠΎΠ²Ρ‹ΠΉ. Π­Ρ‚ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ извСстный ID. ΠΡ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ссылки ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ письма, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат сСссионный ID. НапримСр http://example.com/page.php?PHPSESSID=123456789 . Если опция session.use_trans_sid Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Ρ‚ΠΎ ΠΆΠ΅Ρ€Ρ‚Π²Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ сСссию с этим ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠžΠΏΡ†ΠΈΡ session.use_strict_mode ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ этот риск.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

ΠžΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сохранСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ строгий сСссионный Ρ€Π΅ΠΆΠΈΠΌ, ΠΏΡƒΡ‚Ρ‘ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ/ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии. ВсС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ сохранСния обязаны Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ.

Cookie с сСссионным ID Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² domain, path, httponly, secure ΠΈ, начиная с PHP 7.3, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ SameSite. Π˜Ρ… ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ опрСдСляСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ. ΠžΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° эту ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСссионный ID, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ бСсконСчно. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ session.use_only_cookies Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. session.use_strict_mode ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ риск. session.use_strict_mode=On, Π½Π΅ допускаСт использованиС Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сСссионных ID.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠΈ риска с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ session.use_strict_mode Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ сСссию, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ. НапримСр JavaScript-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ. Π­Ρ‚Π° Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ смягчСна, Ссли ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ рСкомСндациям этого руководства. Если Π²Ρ‹ слСдуСтС этому руководству, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ session.use_strict_mode, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями Π½Π° основС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ session_regenerate_id(), ΠΊΠ°ΠΊ рСкомСндуСтся. Если Π²Ρ‹ всё это сдСлаСтС, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° Π² ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Ρ‘Π½. Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π» доступ ΠΊ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠ΅ΠΉ сСссиСй, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ для дальнСйшСго расслСдования ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ. ПослС этого, ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠΉΡ‚Π΅ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒ с использованиСм ΠΊΡ€Π°Π΄Π΅Π½Π½ΠΎΠΉ сСссии.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Доступ ΠΊ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠ΅ΠΉ сСссии Π½Π΅ всСгда ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π°Ρ‚Π°ΠΊΡƒ. ΠΠ΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ сСтСвоС соСдинСниС ΠΈ/ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ сСссии ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»Π΅Ρ‡ΡŒ Π·Π° собой ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π‘ PHP 7.1.0 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция session_create_id(). Π­Ρ‚Π° функция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для создания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии с использованиСм ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² качСствС прСфикса для достиТСния большСй управляСмости. ΠŸΡ€ΠΈ Π΅Ρ‘ использовании ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ session.use_strict_mode. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС нСдобросовСстныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ сСссий для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ вСрсиях PHP Π΄ΠΎ 7.1.0 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CSPRNG, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /dev/urandom ΠΈΠ»ΠΈ random_bytes() ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии. session_create_id() ΠΈΠΌΠ΅Π΅Ρ‚ встроСнная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ обнаруТСния ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° INI-настройках. ИспользованиС session_create_id() являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ.

ΠŸΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии

ИспользованиС session.use_strict_mode - это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ нСдостаточно. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ session_regenerate_id() для обСспСчСния бСзопасности сСссий.

ΠŸΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² сСссий сильно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ риск ΠΊΡ€Π°ΠΆΠΈ сСссии, соотвСтствСнно Π½Π°Π΄ΠΎ Π½Π° пСриодичСской основС Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ session_regenerate_id(). НапримСр, ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 15 ΠΌΠΈΠ½ΡƒΡ‚ для особо сСкрСтных Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°ΠΆΠ΅ Ссли сСссию ΡƒΠΊΡ€Π°Π΄ΡƒΡ‚, ΠΎΠ½Π° достаточно скоро станСт ΠΈΡΡ‚Ρ‘ΠΊΡˆΠ΅ΠΉ ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС ΠΈΡΡ‚Ρ‘ΠΊΡˆΠ΅ΠΉ сСссии.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Ѐункция session_regenerate_id() Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄ΠΎ записи Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² $_SESSION. (session_regenerate_id() сохраняСт Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии автоматичСски). Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкущая сСссия ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ авторизованная.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ НЕ Π”ΠžΠ›Π–ΠΠ« ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ истСчСния срока дСйствия ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ session.gc_maxlifetime. ΠΡ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ пСриодичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ сСссии для прСдотвращСния Π΅Ρ‘ срока дСйствия ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСссии.

ВмСсто этого, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ сСссии Π±Π°Π·ΠΈΡ€ΡƒΡΡΡŒ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠ΅.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ сСссий ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ, эта Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°. Π”Π°Π½Π½Ρ‹Π΅ старых сСссий ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° запуска сборщика мусора. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΡ… сСссий ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Однако Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ НЕ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. НапримСр, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ session_regenerate_id(true); ΠΈ session_destroy() совмСстно для Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹ΠΌ, Π½ΠΎ это ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅.

session_regenerate_id() ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ удаляСт старыС сСссии. Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСссии ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступны для использования. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅ΡΠ΅Ρ‡ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования старых сСссий ΠΊΠ΅ΠΌ-Π»ΠΈΠ±ΠΎ, Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ² доступ ΠΊ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΠΌ сСссиям ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

НСмСдлСнноС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»Π΅Ρ‡ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты. БСссия ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСти ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ доступа ΠΊ сайту/ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.

ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ нСдобросовСстный доступ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π΄Π°Π½Π½Ρ‹Π΅ сСссий Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ.

ВмСсто Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ удалСния старых сСссий Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… Π½Π΅ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, установив ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π»Π°Π³ ΠΈ врСмя ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ истСчСния сСссии Π² $_SESSION, Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ² ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этим Π΄Π°Π½Π½Ρ‹ΠΌ.

Π’Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Ρ‚ΡŒ доступ ΠΊ старым сСссиям сразу ΠΆΠ΅ послС Π²Ρ‹Π·ΠΎΠ²Π° session_regenerate_id(). НСобходимо ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ нСсколько сСкунд для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… сСтСвых соСдинСний ΠΈ нСсколько ΠΌΠΈΠ½ΡƒΡ‚ для Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для WiFi ΠΈΠ»ΠΈ мобильного ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пытаСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠ΅ΠΉ сСссии, Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ. Π’ этом случаС рСкомСндуСтся ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ статус "Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½" со всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π°Ρ‚Π°ΠΊΡƒ.

session.use_only_cookies ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС session_regenerate_id() ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ DoS посрСдством установки нСудаляСмой cookie. Если Ρ‚Π°ΠΊΠΎΠ΅ происходит, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ cookie ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ. ΠΡ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅Π΄Π½Ρ‹Π΅ cookie Ρ‡Π΅Ρ€Π΅Π· ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ JavaScript-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ), ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½Π΅ ΠΈ Ρ‚.Π΄.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

НС Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°ΠΉΡ‚Π΅ риск DoS. session.use_strict_mode=On обязатСлСн для ΠΎΠ±Ρ‰Π΅ΠΉ бСзопасности ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² сСссий! ВсС сайты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ session.use_strict_mode.

DoS (ΠΎΡ‚ΠΊΠ°Π· Π² обслуТивании) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ находится ΠΏΠΎΠ΄ Π°Ρ‚Π°ΠΊΠΎΠΉ. НаиболСС частая прСдпосылка для Π½Π΅Π³ΠΎ - JavaScript-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… сСссии

Π”Π°Π½Π½Ρ‹Π΅ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΡ… сСссий Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управлСния сСссиями Π΄Π΅Π»Π°Π΅Ρ‚ это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π”Π°Π½Π½Ρ‹Π΅ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΡ… сСссий Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊ быстро, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π΄Π°Π½Π½Ρ‹Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий НЕ Π”ΠžΠ›Π–ΠΠ« ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ сразу ΠΆΠ΅. Для обСспСчСния этих ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π²Ρ‹ Π”ΠžΠ›Π–ΠΠ« ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ контроля Π·Π° ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΠΌΠΈ сСссиями Π½Π° Π±Π°Π·Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ.

УстанавливайтС ΠΈ управляйтС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΆΠΈΠ·Π½ΠΈ сСссии Ρ‡Π΅Ρ€Π΅Π· $_SESSION. Π—Π°ΠΏΡ€Π΅Ρ‰Π°ΠΉΡ‚Π΅ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΡ… сСссий. Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ сСссии, снимайтС статус Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ со всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠ΅ΠΉ сСссии ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒ. Для обСспСчСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ всС Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ сСссии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Доступ ΠΊ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠ΅ΠΉ сСссии ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΈΠ·-Π·Π° Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ сСтСвого доступа ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ доступа ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ/сайту. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии Ρ‡Π΅Ρ€Π΅Π· cookie, Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ "Set-Cookie" ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π΄ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ·-Π·Π° ΠΏΠ»ΠΎΡ…ΠΎΠΉ связи. Одно соСдинСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ пСрСсозданиС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° посрСдством session_regenerate_id(), Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΡΡ‚Ρ‘ΠΊΡˆΠΈΠΌ сСссиям Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями Π½Π° Π±Π°Π·Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, Π½Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ сСссии Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ session_regenerate_id(), Π½ΠΈ session_destroy(), Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ доступа ΠΊ сСссии Π½Π° Π±Π°Π·Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ. ΠŸΡƒΡΡ‚ΡŒ session_gc() сам удаляСт старыС сСссии ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

БСссии ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Π΅ сСссии Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ состояния Π³ΠΎΠ½ΠΊΠΈ. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° для обСспСчСния консистСнтности Π΄Π°Π½Π½Ρ‹Ρ… сСссии ΠΌΠ΅ΠΆΠ΄Ρƒ запросами.

Однако Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ DoS-Π°Ρ‚Π°ΠΊΠΈ. Для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ риска DoS с использованиСм Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ сСссий, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ…. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ "read only", ΠΊΠΎΠ³Π΄Π° сСссию Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ 'read_and_close' с session_start(). session_start(['read_and_close'=>1]); Π—Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ сСссию с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ session_commit() сразу, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ $_SESSION.

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управлСния сСссиями Π½Π΅ слСдит Π·Π° измСнСниями $_SESSION, ΠΏΠΎΠΊΠ° сСссия Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Π°. Π­Ρ‚ΠΎ ваша Π·ΠΎΠ½Π° отвСтствСнности, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ.

АктивныС сСссии

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ сСссиями ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Ρ‚ΡŒ Π΅Π³ΠΎ, сколько Π΅ΡΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий, с ΠΊΠ°ΠΊΠΈΡ… IP (ΠΈ Π³Π΄Π΅ гСографичСски), ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΎΠ½ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ ΠΈ Ρ‚.Π΄. PHP Π½Π΅ сдСлаСт этого Π·Π° вас. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π•ΡΡ‚ΡŒ нСсколько ΠΏΡƒΡ‚Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всю Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° сСссия Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π° сборщиком мусора, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ соотвСтствСнно ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ свою Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π°ΠΌΡ‹ΠΉ простой способ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² качСствС прСфикса для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всю Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² $_SESSION. МногиС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠΌΠ΅ΡŽΡ‚ достаточно быстро Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ строки ΠΏΠΎ прСфиксу. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ session_regenerate_id() ΠΈ session_create_id() для этого.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Никогда Π² качСствС прСфикса Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Если ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»Π΅Π½, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ hash_hmac().

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Для ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ настройки трСбуСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ session.use_strict_mode. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ эта опция Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, ΠΈΠ½Π°Ρ‡Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпромСтирована.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями Π½Π° Π±Π°Π·Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для опрСдСлСния ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… сСссий. Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° доступа ΠΊ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ сСссии, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ для всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… сСссий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

БСссии ΠΈ автоматичСский Π²Ρ…ΠΎΠ΄

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ НЕ Π”ΠžΠ›Π–ΠΠ« ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΠ΅ сСссии для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ автоматичСского Π²Ρ…ΠΎΠ΄Π° Π² систСму, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ€Π΅Π·ΠΊΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΡ€Π°ΠΆΠΈ сСссии. АвтоматичСский Π²Ρ…ΠΎΠ΄ Π² систСму Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

УстанавливайтС бСзопасныС Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π°Π²Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠ½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ setcookie(). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ бСзопасноС Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, посильнСС Ρ‡Π΅ΠΌ SHA-2, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ SHA-256 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ со случайными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· random_bytes() ΠΈΠ»ΠΈ /dev/urandom.

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½ Π»ΠΈ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π°Π²Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠ½Π°. Если ΠΊΠ»ΡŽΡ‡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ установитС Π΅ΠΌΡƒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. ΠšΠ»ΡŽΡ‡ Π°Π²Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠ½Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ, Π° всСгда создавайтС Π½ΠΎΠ²Ρ‹ΠΉ.

ΠšΠ»ΡŽΡ‡ Π°Π²Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠ½Π° - это ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π•Π³ΠΎ Π½Π°Π΄ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ ΠΏΠΎ максимуму. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ path/httponly/secure/SameSite ΠΏΡ€ΠΈ установкС cookie для Π΅Π³ΠΎ Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Никогда Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ Π°Π²Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠ½Π°, ΠΊΡ€ΠΎΠΌΠ΅ случаСв, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ автоматичСский Π²Ρ…ΠΎΠ΄ Π² систСму ΠΈ удаляСт Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ "cookie", установлСнныС для Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

CSRF (ΠœΠ΅ΠΆΡΠ°ΠΉΡ‚ΠΎΠ²Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠ° запроса)

БСссии ΠΈ авторизация Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Ρ‚ΠΈΠΏΠ° CSRF. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ.

output_add_rewrite_var() ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ CSRF. Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ руководство для подробностСй.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π”ΠΎ PHP 7.2.0 использовался ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π±ΡƒΡ„Π΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ INI-настройки для "trans sid". Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ использованиС output_add_rewrite_var() с PHP Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий Π½Π΅ рСкомСндуСтся.

МногиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ CSRF. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ своСго Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Начиная с PHP 7.3, для сСссионной cookie ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ SameSite. Π­Ρ‚ΠΎ обСспСчит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ² CSRF.

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы