Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #41, АПРЕЛЬ 2004 г.

Защити свой 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"; # Если ответ не получен – завершаем работу скрипта

}

Назад на стр. 041-088-5  Содержание