Безпека Вашого сайту
Ця сторінка призначена для тих користувачів, які користуються послугами веб-хостингу "Уарнет" та присвячена проблемі безпеки власного веб-сайту. Ми хочемо відповісти на типові запитання, які можуть в вас виникнути.
Чи можуть інші користувачі читати вміст моїх файлів, які розміщені на веб-сервері?
Так, можуть. Веб-сервер, як правило, стартує з-під користувача "nobody" (непривілегійований користувач), тому ваші файли мають мати доступ на читання "для всіх". А інші користувачі в цьому випадку можуть переглядати вміст вашої директорії та ваших файлів за допомогою, наприклад своїх CGI-скриптів. Можна лише ускладнити перегляд файлів, якщо директоріям ставити тип доступу 711 (drwx--x--x - тільки виконання для інших).
Як обмежити доступ до директорії через веб?
Для того, щоб обмежити доступ до певної директорії, використовуйте .htaccess – файли з необхідними вам директивами сервера. Перелік директив можна знайти в документації до Apache-сервера на http://web.uar.net/manual/mod/directives.html
Найчастіше виникає потреба зробити директорію запарольованою. Приклад конфігураційних файлів є нижче:
В директорії /home/mylogin/www/restricted створюємо файл .htaccess:
AuthName "Memberz Only”
AuthType Basic
AuthUserFile /home/mylogin/www/restricted/.htpasswd
require valid-user.htpasswd:
user1:hjQ4NbqTHbEYk
username:<DES-encrypted password>
В мене є необхідність створити файли з доступом для запису для всіх. Як мені найкраще це зробити?
Намагайтесь уникати таких ситуацій. Якщо скрипту потрібен вивід в файл, то програмуйте на Перлі – Перлівскі скрипти виконуються від вашого імені. Якщо ж вам все ж таки необхідно створювати такі файли, то робіть їх поза (/home/mylogin/www ) директорією вашого сервера – створіть для цього окрему директорію в своїй домашній (наприклад /home/mylogin/public_writable_dir) директорії.
Як заховати некриптовані паролі в CGI-скриптах?
CGI-скрипти та SSI виконується з-під власника віртуального сервера (від вашого імені). Тому для того, щоб заховати сам текст скрипта (на Перлі чи на Шелі) достатньо встановити для нього доступ лише для власника 700 (-rwx------). І ще одна перевага: ваші скрипти можуть без проблем записувати інформацію в файли в вашій директорії (немає потреби робити файли з доступом на запис для всіх). Тому, для написання програм під веб найкращій вибір – це Perl.
Я вмію програмувати лише на PHP, а паролі в тексті PHP-скрипта зберігаються в відкритому вигляді… Що мені робити?
PHP – це проста мова програмування і за рахунок простоти зменшується рівень безпеки, що є природньо: чим більше зручності, тим менше безпеки. Але деякі поради ми можемо вам дати.
Перш за все, НЕ використовуйте PHP-аутентифікацію для HTTP – використовуйте замість цього варіант з .htaccess вище. Приховуванням паролів наших користувачів для доступу до MySQL сервера, в разі програмування на PHP, ми беремо на себе. PHP-модуль автоматично визначає ваш логін та пароль при з”єднуванні до MySQL-сервера, тому вам НЕ потрібно включати параметри з”єднання в PHP-код. Приклад:
<?php
$link = mysql_connect () or die ("Could not connect");
print ("Connected successfully");
mysql_select_db ("my_database") or die ("Could not select database");
… Зробити щось з MySQL базою …
mysql_close($link);
?>Функція mysql_connect викликається без параметрів. Але в цьому випадку хочемо вас застерігти від створення файлів чи директорій з правами запису для всіх в директорії вашого сервера /home/mylogin/www, оскільки інші користувачі можуть отримати доступ до вашої бази.