Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Твой первый сайт" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Октябрь 2004 → | ||||||
1
|
3
|
|||||
---|---|---|---|---|---|---|
4
|
5
|
6
|
7
|
8
|
10
|
|
11
|
12
|
13
|
14
|
15
|
16
|
|
18
|
19
|
20
|
21
|
22
|
24
|
|
25
|
26
|
27
|
28
|
29
|
31
|
Статистика
+10 за неделю
В помощь КРЕАТОРу #16
Информационный Канал Subscribe.Ru |
В
помощь КРЕАТОРу ( #16 ) Рассылка сайта www.kpeaTops.RusHost.Net |
||||||
Сегодня в выпуске | # От редактора # | |||||
От редактора | Здравствуйте, уважаемые подписчики! Извините, что задержал выпуск (если вы помните он выходит по субботам). Поверьте, на то были веские пречины. Еще хочу ответить на ваш ЧАстозадоваемый ВОпрос: "Вы писали «Проекту всегда нужны люди! Если вы желаете помочь или хотите вести один из разделов, то милости просим:) Обращайтесь ко мне. Если даже вы ничего не умеете, я все равно найду, чем вас занять. Главное желание.» Так вот, я хотел бы вам помоч, но к сожелению ничего не умею (но учусь!). Чем я могу быть вам полезен?" Главная ваша помощь заключается в слудующем: читайте статьи в рассылке и на сайте (или дополнительную литературу) и, если увидите что-небудь непонятное, пишите об этом форум. Я постараюсь вам помочь. К тому же форум не будет пустовать :)) Сегодня некоторые перестановкм в рассылке. В выпуске не будет раздела "разбор сайтов", так как никто не прислал заявки :((, а его заменит скрипт. Раздел "Интересные сайты РУнета" не готов, в связи с отсутствием человека, желающим этим занятся (я сам не могу это сделать по причине посещения сайтов однобокой тематики (web-мастерской тематики, если кто не в курсе)). Если кто-либо готов заняться этим (и тем самым помочь проекту), обращайтесь ко мне. Только учтите, что это одноразовая "подработка" и нужно искать сайты постоянно. Ну и хватит об этом! Приступайте же к самой рассылке! | |||||
Новости | ||||||
Новые вирусы | ||||||
Софт | ||||||
Статья | ||||||
Скрипт | ||||||
Вопрос - Ответ | ||||||
Голосование | ||||||
Обмен ссылками | ||||||
Юмор | ||||||
Заключение | ||||||
# Новости мира # | ||||||
14.10.04 CD ROM-дисководы отмирают С ростом популярности формата DVD, а также устройств, способных не только воспроизводить, но и записывать информацию, объем продаж дисководов, предназначенных только для чтения, значительно снижается. Крах рынка «читающих» CD-приводов многие эксперты прогнозируют уже в течение ближайших лет. Источник : CNews "Фишинговые" сайты растут, как грибы после дождя В семействе подставных веб-ресурсов отмечен долгоиграющий демографический взрыв. Фишинг (Phishing – англ. "разводилово на бабки") становится все более популярным способом отъема денег у наивной части богатых интернетчиков. По данным компании Websense Security Labs, на которые ссылается The Register, в последнее время количество мошеннических сайтов ежемесячно увеличивается в полтора раза. Источник : SecurityLab.ru В Сети обнаружен вирус имени Бекхэма Международное вирусописательское сообщество, пресытившееся прелестями Памелы Андерсон, обратило свой алчущий взор на покрытое славой имя Дэвида Бекхэма. Источник : SecurityLab.ru Microsoft: 22 новые "дыры" в ПО Корпорация Microsoft опубликовала 10 рекомендаций, предупреждающих пользователей и администраторов Windows-систем, о 22 новых «дырах» в продуктах компании. Затронутой оказалась и Mac OS X. Параллельно появились сообщения о новом черве, нацеленном на приложение MSN Messenger. Источник : CNews Создан новый язык программирования На прошлой неделе компания iSpheres представила язык программирования собственной разработки, призванный упростить обработку так называемых "событий". К таковым в компании iSpheres относят, к примеру, мониторинг финансовых транзакций, попыток взлома сетей и других процессов, с которыми работает бизнес ПО. Источник : CNews |
||||||
# Новые вирусы # | ||||||
Trojan.Comxt - это троян, который загружает удаленные файлы. Он использует Alternate Data Streams, чтобы скрыть свое присутствие. Worm.Win32.Opasoft.s Вирус-червь. Распространяется по локальным сетям через открытые сетевые ресурсы. Имеет размер 17920 байт, упакован ASPack. Размер распакованного файла около 25 КБ. Trojan.Tannick - это троян, мониторящий Web сайты, которые посещает пользователь Funner.A - это вирус, использующий программу для передачи мгновенных сообщений MSN Messenger |
||||||
# Софт # | ||||||
CompDocs v20 электронный компьютерный журнал, выпуск №20 подробнее >> Ad-aware reference file 01R343 04.10.2004 Файл обновления базы данных программы Ad-Aware, позволяющей выявить и удалить из системы спонсорские и шпионские модули. Обратите внимание: этот файл подходит для Ad-Aware 6 и не подходит для Ad-Aware SE подробнее >> Ad-aware reference file SE1R11 7.10.2004 Файл обновления базы данных программы Ad-Aware, позволяющей выявить и удалить из системы спонсорские и шпионские модули. Обратите внимание: этот файл подходит для Ad-Aware SE и не подходит для Ad-Aware 6 подробнее >> KoolMoves 4.5.1 Программа для создания флэш анимации. Имеет очень много встроенных спецэффектов и заготовок - сотни клипов, кнопок, эффектов для текста и т.д. С помощью KoolMoves можно создавать анимированные эффекты для текста, летающие логотипы, навигацию по сайту и многое другое. скачать >> E-mail Coder v1.0 Программа предназначена для конвертирования e-mail адресов в код который веббраузеры отображают как нормальный текст,а spam-пауки не понимают. подробнее >> |
||||||
# Статья "Пароль на страницу" # | ||||||
Автор: Дмитрий Лебедев Простейшие способы закрыть директорию или файлы паролем. 1. Пароль на страницу. Часть 1. Скорее теоретическая. 2. Пароль на страницу. Часть 2. Блокировка подбора 3. Пароль на страницу. Часть 3. Пароль от базы Пароль на страницу. Часть 1. Скорее теоретическая.я решил описать способы закрыть паролем часть сайта. Тема, на самом деле, большая, поэтому на первый раз ограничусь авторизацией php+mysql. Самый первый вопрос, который обычно встаёт — как закрыть директорию со скрпитами администрирования паролем. При этом не нужно никаких изысков — один или несколько администраторов имеют одни и те же права, а персоналии меняются редко. Проще всего в данной ситуации использовать стандартную серверную авторизацию — положить файлы .htaccess и .htpasswd и прописать в них нужные параметры. Про это уже написано много, поэтому я ничего особо нового не скажу, лучше посмотрите сюда. Добавлю две вещи. Первое — это куда класть файл .htpasswd. Экспериментальным путем я выяснил, что если, например, путь к документу с сообщением об ошибке (ErrorDocument) пишется относительно системной переменной DocumentRoot. Но путь к файлу с паролями (UserFile) пишется относительно ServerRoot. Насколько я понял, выше ServerRoot положить .htpasswd нельзя — "./" не воспринимается. Всё это сделано для того, чтобы можно было поместить файл с паролями, например, одним уровнем выше корневой директории сайта, чтобы из сети доступа к файлу не было вообще. Второе — это то, что скрипт может узнать, кто его открывает и пароль: переменные $PHP_AUTH_USER и $PHP_AUTH_PW. Главный недостаток этого способа — сервер не может блокировать подбор пароля (это после нескольких неудачных попыток входа пользователю предлагается подождать часок-другой, а в течение этого времени обращения с его IP-адреса игнорируются). Это написано в официальной документации по Апачу. Ещё один недостаток — необходимость переписывать файлы с паролями при удалении пользователя или введении нового. Но если это происходит нечасто, этого способа вполне достаточно, к тому же не придётся забивать голову написанием механизма авторизации. Автоматизация авторизацииЭто нужно не только для упрощения работы с большим количеством пользователей и их большой "текучкой". Если нужно держать дополнительную информацию о пользователях, либо необходимо гибкое разграничение прав, лучше перенести авторизацию в базу. Каждая страница закрытой территории подключает файл с вот таким кодом: $result = mysql_query(" SELECT * FROM person WHERE login='". preg_replace("/[^\\w_-]/","",$PHP_AUTH_USER). "' AND pass='". md5($PHP_AUTH_PW). "'"); if (@mysql_num_rows($result)!=1) { header("WWW-Authenticate: Basic realm=\"User area\""); header("HTTP/1.0 401 Unauthorized"); print("Чтобы войти в пользовательскую часть сайта, надо ввести имя и пароль."); exit(); }; $user_row = mysql_fetch_array($result); В первой строке из логина удаляются все символы кроме букв, цифр, тире и символа подчеркивания. Затем проверяется количество полученных строк, и только если это одна строка, дается доступ. В остальных случаях пользователь увидит в броузере окно, предлагающее ввести логин и пароль. Если же пользователь вошел успешно, в массиве $user_row мы имеем всю информацию о нем. Конечно же, пример, который я привёл, имеет ряд существенных недостатков. Не
переписывайте его один-в-один, чтобы потом не пасть жертвой попыток подбора
пароля, потому что И последний на сегодня способ — хранение зашифрованных данных в куках. Есть скрипт для входа, остальные подключают код, позволяющий только продолжить действия в закрытой области — если куки истекут, или он выйдет оттуда, придётся возвращаться на страницу для входа. Входной скрипт проверяет логин и пароль и выдает две куки. В первой — логин, чтобы сразу опознать пользователя (в базе поле логина, естественно, уникальное или даже ключевое). Во второй куке — хэш от времени входа и пароля (для полноты конспирации я добавляю к этим строкам букву "Ы" — тогда хэш подобрать почти невозможно :). Все остальные программы подключают код, который делает следующее. Делает запрос в базу — выбирает строку с полученным логином. Из этой строки берет поле "log_time" и пароль и делает из них, как и описано выше, хэш. Сравнивает его с тем, что получил, и если они совпадают, выдает новую куку хэша, опять же, от пароля, времени и буквы "Ы" и делает запрос в базу данных "UPDATE user SET log_time='...' WHERE login='$cookie_login'". if (isset($HTTP_COOKIE_VARS[$cookie_login]) && isset($HTTP_COOKIE_VARS[$cookie_code])) { $login = $HTTP_COOKIE_VARS[$cookie_login]; $code = $HTTP_COOKIE_VARS[$cookie_code]; $result = mysql_query("SELECT date_format(log_date,'%Y%m%d%H%i%s') as log_date1,pass,uid FROM user WHERE email='$login' AND log_date>'DATE_SUB(NOW(),INTERVAL 15 MINUTE)'"); if (!mysql_error() && @mysql_num_rows($result)==1) { $log_time0 = time(); $log_time1 = date("YmdHis", $log_time0); $log_time2 = date("Y-m-d H:i:s", $log_time0); $current_user = mysql_fetch_array($result); if (md5($current_user["pass"].$current_user["log_date1"].$md5letter) == $code) { mysql_query("UPDATE user SET log_date='$log_time2' WHERE uid=".$current_user["uid"]); setcookie($cookie_code, md5($current_user["pass"].$log_time1.$md5letter), time()+900, $site_path); $auth = true; } else unset($current_user); }; }; Опять же, здесь нет никакой защиты от подбора и атаки на сервер (кстати, здесь можно вместо буквы "Ы" писать IP-адрес пользователя — чтобы, например, соседу по офису нельзя было взять файл с кукой и зайти со своего компьютера). Пароль на страницу. Часть 2. Блокировка подбораКогда я выложил этот выпуск в прошлый раз, меня запинали на месте, мол такой блокировкой можно и сервер "пустить под откос". Но сначала о блокировке подбора. Банальности, но всё-таки. Пароль длинной десять символов из букв латиницы и цифр - это очень много вариантов. Если подбирать пароль по 1 000 000 вариантов в секунду, понадобится несколько тысяч лет. Но поскольку такую абракадабру запомнить сложно, мы чаще делаем пароль из осмысленных слов. Несколько лет назад оказалось, что большинство паролей можно подобрать при помощи словаря из 10 000 слов. В своё время в сети появился червь (вирус такой), который лазил по юниксовым серверам, используя их дырки в защите, и подбирал пароли привелигированых пользователей при помощи... системного орфографического словаря Юникса. Ничего таскать не надо было! Каждый пользователь, пока он не ввёл правильный логин и пароль, считается злобным хакером. С чем же мы имеем дело, когда пользователь вводит что-либо неправильно? Я долго думал, как можно вызвать перегрузку на сервере, если механизм защиты стоит на файлах. Оказалось, несложно (сколько это будет стоить - другой вопрос). Итак, допустим, сервер не выдержит, если скрипт будет пытаться 1000 раз в секунду открывать файлы на запись и писать в них данные. Поскольку после 5 неудачных попыток войти в систему пользователь будет сразу получать отказ в доступе (без какой-либо записи данных в файл), надо найти 200 уникальных IP, с которых по пять раз и обратиться. Это возможно. Вешаем в баннерокрутилке html-баннер с пятью тегами: <img src="http://user:password@www.host.ru/secret/absent.gif" width=1 height=1> Пользователь моментально делает пять обращений сервер пять раз пишет в файл (кстати, в некоторых броузерах, возможно, выскочит окно для ввода логина и пароля). Можно сделать html-страницу с пятью такими картинками, а саму страницу вставить через iframe на посещаемый сайт (через iframe - чтобы по полю referer не нашли. Вряд ли служба поддержки халявного хостинга будет заниматься такими вещами как копание в лог-файлах в поисках рефереров). Те примеры, которые я привёл, разумеется, натянуты, но сам факт того, что можно воспользоваться таким недостатком системы, доказан. Кстати, нечто подобное уже было. Но всё-таки приведу этот способ - зря писал, что ли? Его, кстати, можно без особого страха применять для ограниченного количества адресов (например, для локальной сети фирмы), положив в директорию файл .htaccess такого содержания: order deny,allow deny from all allow from xxx.xxx.xxx А вот код программы: $errors = 0; $fn = "ignore/". preg_replace("[^\d\.]", "", $REMOTE_ADDR. ".". $HTTP_FORWARDED_FOR); if (is_file($fn)) { if (filectime($fn) < time()-3600) unlink($fn); else $errors = fread(fopen($fn, "r"), 2); }; if ($errors>5) { print ("Доступ закрыт. Зайдите через час."); exit(); }; // здесь происходит установка связи с сервером БД. чтобы не трогать зря, если пользователя сразу же "отлупили". $result = mysql_query("SELECT * FROM user WHERE login='". preg_replace("/[^\w_\-]/", "", $PHP_AUTH_USER). "' AND pass='". md5($PHP_AUTH_PW). "'"); if (@mysql_num_rows($result)!=1) { header("WWW-Authenticate: Basic realm=\"secret area\""); header("HTTP/1.0 401 Unauthorized"); print ("Authorization required"); fwrite(fopen($fn, "w"), ++$errors); exit(); }; $current_user = mysql_fetch_array($result); mysql_free_result($result); Впрочем, грех работать с файлами, если есть база. Шутка. Для непрошедших авторизаций создаём таблицу: CREATE TABLE unauth (username VARCHAR(64) NOT NULL, pass VARCHAR(64) NOT NULL, ip VARCHAR(255), logintime TIMESTAMP) И вместо обращения к файлам работаем с базой. $errors = @mysql_result(mysql_query("SELECT count(username) as falses FROM unauth WHERE logintime>DATE_SUB(NOW(),INTERVAL 1 HOUR) AND ip='$REMOTE_ADDR'"),0); if (mysql_error()) die(mysql_error()); if ($errors>5) { print ("Доступ закрыт. Зайдите через час."); exit(); }; $result = mysql_query("SELECT * FROM user WHERE login='". preg_replace("/[^\w_\-]/", "", $PHP_AUTH_USER). "' AND pass='". md5($PHP_AUTH_PW). "'"); if (@mysql_num_rows($result)!=1) { header("WWW-Authenticate: Basic realm=\"secret area\""); header("HTTP/1.0 401 Unauthorized"); print ("Authorization required"); mysql_query("INSERT INTO unauth (username, pass, ip) VALUES ('$PHP_AUTH_USER', '$PHP_AUTH_PW', '$REMOTE_ADDR $HTTP_X_FORWARDED_FOR')"); exit(); }; $current_user = mysql_fetch_array($result); mysql_free_result($result); Хранить ли старые записи для статистики или нет - дело хозяйское. Если что, их можно удалять, выполняя перед авторизацией запрос: DELETE FROM unauth WHERE logintime<DATE_SUB(NOW(),INTERVAL 1 HOUR) Такой механизм при больших нагрузках будет работать быстрее и надёжнее, чем файлы - в базе часто используемые данные буферизуются и обрабатываются непосредственно в оперативной памяти. Пароль на страницу. Часть 3. Пароль от базыБыла у меня в своё время проблема: надо закрыть администрационную часть сайта, но при этом я не могу положить файл .htpasswd выше корневой директории сайта. Врождённая подозрительность не позволяла положить файл с паролем и отдельную директорию и заблокировать доступ к ней по http. Решил попробовать сделать защиту как в phpMyAdmin: у пользователя спрашиваются логин и пароль, с которыми скрипт соединяется с базой. В своём анализаторе логов я сделал именно так. Удобство метода в том, что файл можно складывать куда угодно — никаких кук, никаких директив сервера для директории. Заодно, если поменяется пароль в базе данных, не надо ничего исправлять в скрипте. Распишу метод на примере MySQL. Пишем функцию, например, mysql_die: function mysql_die() { header("HTTP/1.0 401 Unauthorized"); header("WWW-authenticate: basic realm=\"Statistics\""); print ("Access denied. User name and password required."); exit(); } В начале программы указываются хост сервера БД и, если надо, имя базы: $db_host = "localhost"; $db_name = "somedatabase"; А для соединения с базой берутся переменные сервера: $PHP_AUTH_USER и $PHP_AUTH_PW. $db_connect = @mysql_connect($db_host, $PHP_AUH_USER, $PHP_AUTH_PW) or mysql_die(); И всё. Теперь о недостатках. Разумеется, с такой защитой можно пробовать подбирать пароль (в принципе, можно приделать блокировку, но тогда потерятеся вся красота метода). Пароль, как и в случае защитой средствами сервера, пересылается в открытонях в форуме разгорелась дискуссия, что лучше где применять — защиту через м виде. Но для простых задач такое вполне сгодится. На д401-й код, свои куки или сессии. Я не стал ввязываться, чтобы не растерять красноречия, но в ближайших выпусках опишу в общих чертах последние два метода . |
||||||
# Скрипт # | ||||||
Свой скрипт прислал товарищь Dikobrazz В чем же смысл скрипта? А видели ли вы когда-небудь надписи внизу страниц "Сгенерировано за 0,003457 секунд" или что-то подобное? Так вот этот скрипт позволит вам сделать подобное на свое странице. Как его использовать? Предельно просто. Вставьте в страницу, на которой вы хотите вывести данную "фичу" следующий код (комментерии по ходу): <? require_once("timer.php");//путь до файла скрипта. В данном примере он назвается timer.php $timer = new Timer(6); // В скобках указана выдаваемая точность подсчета времени: 2-8 знаков после запятой $timer->start(); // сюда вставьте содержимое страницы $timer->stop(); $time_exe = $timer->result(); echo $time_exe; //вывод количества прошедших секунд после запуска скрипта /* Timer class, all rights reserved. * Copyright (C) by Dikobrazz, 2004 * Mail to jcrv@yandex.ru * Timer(value) value- задает точность результата измерения * $this->start(), $this->stop() задают начало и конец отсчета * $this->result() возвращает значение отрезка времени */ function Timer($round_size) function start() function stop() function correction($val1,$val2)
} |
||||||
# Вопрос - Ответ # | ||||||
Уважаемые знатоки web-мастерства и программирования! Если вы знаете ответ на заданные вопросы, присылайте их мне по указанной ссылке. Присылайте свои вопросы по адресу vasyasya@74mail.ru или задавайте их в форум kforum.h12.ru Задать вопрос ! |
||||||
# Голосование - Подводим итоги. # | ||||||
Как я вижу, этот раздел не особо интересует подписчиков, поэтому и не буду его делать. |
||||||
# Обмен ссылками # | ||||||
№ 12 Название сайта: Неофициальный сайт радио "Нелли-Инфо" г. Мозырь URL: http://www.radionelly.narod.ru Описание сайта: Неофициальная страничка первой региональной радиостанции Республики Беларусь Посещаемость:450 Тематика сайта для обмена:Радиовещание E-mail: radionelly@yandex.ru Заполните форму и нажмите кнопку "Отправить". Ваше предожение по обмену ссылками появится в одном из следующих выпусках. | ||||||
# Юмор # | ||||||
Штирлиц шел по коридорам гестапо. Неожиданно из поворота выскочил Мюллер. Штирлиц, не думая, выпустил всю обойму BFG. Мюллер даже не покачнулся. - Режим Бога, - подумал Штирлиц. - Полное оружие, - подумал Мюллер. *** Дорогая, милая мама! Сегодня у тебя праздничный, радостный день - день твоего рождения! И я от всей души поздравляю тебя с этим событием и хочу пожелать тебе долгих лет жизни, хорошей производительности в работе и много, много счастья! Самое главное для тебя сейчас - это долголетие.... И пусть память тебе не отказывает. И чтобы ты не сдохла как моя предыдущая мама - от глупого и бессмысленного скачка напряжения. *** Сидит пьяный программист за компьютером. На экране две панели NORTON COMMANDER. В левой панели диск 'С:' и в правой диск'С:' Смотрит и думает: 'А нафиг мне два диска С???' Взял да и стер один. *** Останавливает ГАИшник машину, из машины вываливается сильно пьяный водитель. ГАИшник спрашивает: - Ваши права?! Водитель отвечает (с трудом ворочая языком): - Root! *** Вчера, 15 октября, Майкрософт подал в суд на фирму Бандай, производителя томагучи (электронные домашние животные, от которых детишки всего мира сдвинулись умом). Суть обвинения в том, что программное обеспечение томагучи - плагиат майкрософтоского. Адвокат Майкрософта Эрик Лоргард заявил: "Томагучи требуют постоянного, практически ежечасового ухода, иначе они гибнут. Впервые это было реализовано в Windows." |
||||||
# Заключение # | ||||||
Вот и закончился очередной выпуск, увидимся через неделю! Пока! В начало рассылки |
Автор рассылки: Vasyasya
Ведущий раздела "Юмор": Olegyarp [http://izhowner.narod.ru/]
Ведущий раздела "программирование на Delphi": DenInBlack
Архив рассылки: http://www.kpeatops.rushost.net/ras/index.htm
Подписаться: comp.design.kpeatops-sub@subscribe.ru
Количество подписчиков: 1068
Внимание:
Проекту всегда нужны люди! Если вы желаете помочь или хотите вести один из разделов, то милости просим:) Обращайтесь ко мне. Если даже вы ничего не умеете, я все равно найду, чем вас занять. Главное желание.
Перепечатка материалов разрешается только с указанием видимой ссылки на kpeaTops.RusHost.Net
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.design.kpeatops |
Отписаться |
В избранное | ||