| АВТОРИЗАЦІЯ ЗА ДОПОМОГОЮ СЕСІЙ
Ви, напевно, вже відмітили особливість обох вищеописаних способів авторизації - перевірка правильності логіна і пароля здійснюється на кожній сторінці, де потрібний авторизований доступ. Якщо відвідувачів на сайті не дуже багато, то це сповна допустимо, проте при великому числі авторизованих відвідувачів навантаження на web-сервер може виявитися чималим.
У зв'язку з
цим виникає питання: а чи не можна абияк уникнути необхідності кожного разу здійснювати перевірку логіна і пароля відвідувача? Щоб, одного разу авторизувавши відвідувача, згодом надавати йому доступ на сторінки захищеної зони без яких-небудь перевірок? Саме так, до речі, діє захист на основі засобів web-сервера - файлів .htaccess, описана в першому розділі глави. Але чи можна зробити те ж саме засобами РНР? Та і взагалі використовувати cookie для зберігання паролів не дуже бажано: його вміст може взнати будь-який, хто скористається комп'ютером, на якому цей cookie збережений (багато браузери зберігають cookie в призначеній для них теці, навіть якщо "час життя" cookie витік і він більше не приймається сервером).
Напрошується перша пропозиція: а чом би, наприклад, після успішної авторизації не відправити відвідувачеві cookie з якою-небудь позначкою (наприклад, встановлювати в 1 значення змінної в цьому cookie), а згодом перевіряти не наявність записаних в cookie логіна і пароля у файлі паролів або базі даних, а присутність в cookie цієї самої позначки, однакової для всіх, прошедших авторизацію? Або навіть зробити різних типів позначок і залежно від типа надавати відвідувачеві різні можливості на сайті?
Зробити-то так можна, та ось стійкість такої системи авторизації до злому буде не особливо великою. Зловмисникові буде досить взнати, що за позначку поміщає сценарій авторизації в cookie,
щоб дістати до захищеної зони повний доступ - просто уручну створивши такий cookie. (А якщо при перевірці "позначки" використовувався не елемент масиву $HTTP_COOKIE_VARS, а однойменна змінна, то і просто підставивши її значення в адресному рядку при заході на сторінку з такою перевіркою: наприклад, page . php?auth=1.) Крім того, проглянути значення cookie на комп'ютері відвідувача і взнати, які його ім'я і значення є "позначкою", теж не так важко.
Але найголовніше - відвідувачі незрідка відключають використання cookie при своїх подорожах по Інтернету. При відключених cookie описана вище система авторизації на їх основі працювати не буде.
Як же бути?
Слід
використовувати вельми цікавий механізм сесій, РНР, що з'явився в 4-ій версії.
|