Защити свой WWW-сервер Докучаев Дмитрий aka Forb Спецвыпуск Xakep, номер #041, стр. 041-088-6 #!/usr/bin/perl print "passphrase\n"; где passphrase является паролем для запуска. Теперь Апач будет запускаться без помощи администратора. Двойная защита Если ты хочешь ограничить доступ к документу не только парольным, но и сетевым методом (по IP-адресу), используй директивы Allow и Deny. Таким образом, прибавив в конец .htaccess строки: Order allow, deny Allow from 192.168.0.1 Deny from all ты добьешься того, что к документу получит доступ лишь клиент с адресом 192.168.0.1 и знающий пароль. Практические навыки: PHP Рассмотрим функцию скрипта на языке PHP, которая проверяет валидность переданных логина и пароля. Истинный аккаунт хранится в базе данных mySQL. function auth($login,$password) { $link = mysql_connect("localhost", "root", "") or die ("Could not connect"); mysql_select_db ("Auth") or die ("Could not select database"); // Соединяемся с БД $authorized=0; if(isset($login)) { // Если существует переменная $login $result = mysql_query("select * from admins where name='$login' and passwd='$password'"); // Делаем запрос if (mysql_numrows($result)) { $authorized=1; // Если получаем достоверный ответ – авторизация прошла } } if ($authorized == 0) { echo "Access denied!"; // В противном случае – пароль неверный exit; } } Практические навыки: Perl Рассмотрим скрипт на языке Perl, который проверяет валидность переданных логина и пароля. Истинный аккаунт хранится в базе данных mySQL. use DBI; $mysql=DBI->connect("DBI:mysql:Auth:localhost",root,"passwd") || die "connect()"; # Соединимся с БД $answer = $mysql->prepare("select * from admins where name='$login' and passwd='$password'"); # Делаем запрос $mysql->disconnect; unless ($answer) { exit print "Access denied\n"; # Если ответ не получен – завершаем работу скрипта } |