Article View: pl.answers
Article #211pl.comp.www FAQ - 5/5 - serwery i bezpieczenstwo
From: Ziemek Borowski
Date: Mon, 04 Aug 1997 01:26
Date: Mon, 04 Aug 1997 01:26
392 lines
16680 bytes
16680 bytes
_________________________________________________________________
10. Tworzenie - Java, JavaScript, CGI, SSI
10.1 Po co stosowac programy w przekazie informacji
Czasem trzeba. I to nie po to by _uatrakcyjnic statyczne strony Web_ a
po to by
* zapewnic dostep do danych z bazy
* umozliwic wyszukiwanie
* zapewnic informacje zwrotna
* ulatwic autentyfikacje
10.2 Statyczne - dynamiczne
Nie wiem czemu wszelkie pisma mowiac o Pajeczynie i Javie pisza o
statycznych dokumentach HTML i wnoszeniu ruchu do nich... Uwazam za
haniebna praktyke tworzenie latajacych ramek, spodkow i napisow.
Uwazam, ze wszelkie stosowanie oprogramowania powinno dotyczyc
sytuacji, gdy dane sa po prostu oprawiane w forme HTMLowa.
10.3 Bazy danych
_Jakie sa dostepne bazy danych mozliwe do stosowania w Pajeczynie?_
Odpowiedz brzmi pewnie: _wszystkie_ powazne w tej chwili produkowane.
Ale trzeba wybrac jeden produkt. Ja osobiscie polecalbym Postgres
<http://www.postgresql.org/> na Unixie (a zwlaszcza Linuxie).
Dlaczego?
* dluga historia (10 lat - poczatek prac na zlecenia DARPA i NSF)
* relacyjna
* rozszerzalna
* cechy obiektowe
* dostep przy pomocy podzbioru SQL
* istnieje interface do WWW
Poza tym niektorzy zalecaja:
* mSQL <http://hughes.com.au/> (choc baza ta dostepna jest za darmo
jedynie dla instytucji edukacyjnych),
* miniSQL - T.c.X. Data Konsult <http://www.tcx.se/>
* dostepny teoretycznie za darmo choc na dziwnych zasadach
MICRO/CDS/ISIS <http://www.medianet.com.pl/%7Ecc/> rodem z UNESCO.
* Oracle <http://www.oracle.com/>
* Essentia <http://www.inter-soft.com/products/essentia/>
_Patrz tez:_
* Michal Mosiewicz _Linux i bazy danych_ {w:} Linux+
<http://www.Linux.com.pl/> 3/1997 (ISSN 1427-55-62)
10.4 Przeszukiwanie
Aby udostepnic przeszukiwanie swojego serwera mozna:
instalowac search-engine
oczywiscie taka czynnosc wiaze sie z ryzykiem dociazenia maszyny. Ale
czego sie nie robi dla odbiorcow naszej informacji ;-). Z czego mozna
wybierac?
* SWISH <http://www.eit.com/software/swish/>
* GlimpseHTTPd <http://glimpse.cs.arizona.edu/ghttp/> (kopia na
SunSite.ICM) <http://SunSite.ICM.edu.pl/pub/unix/glimpse/>
* ht://Dig <http://htdig.sdsu.edu/> (RPM na SunSite.ICM)
<http://SunSite.ICM.edu.pl/pub/Linux/redhat-contrib/i386/>
* freeWais
<http://ls6-www.informatik.uni-dortmund.de/ir/projects/freeWAIS-sf
/>
* Exite <http://www.exite.com/> (choc jeszcze nie na Linuxa)
* DEC AltaVista <http://www.altavista.software.digital.com/>
zmusic publicznie dostepne roboty do indeksowania naszych zasobow
W wypadku niektorych publicznie dostepnych uslug przeszukiwawczych
mozliwe jest zawezenie poszukiwan okreslonej klasy URL. Nic (poza
zdrowym rozsadkiem i potencjalnym protestem ich wlascicieli) nie stoi
na przeszkodzie napisaniu odpowiedniej formatki wyszukujacej
uzywajacej np. http://www.hotbot.com/
lub http://infoseek.ICM.edu.pl:8000 .
10.5 Latajace spodki
_W jaki sposob mam spowodowac by odbiorcy mojej strony mogli na niej
pograc w kolko i krzyzyk?_
Nie wiem. Najlepiej byloby chyba zaprzac do tego celu Jave.
_Patrz tez:_
* ????
10.6 W jaki sposob moge zainstalowac licznik na stronie?
Nie nalezy tego robic poniewaz, zazwyczaj, liczniki klamia, nie
uwzgledniajac odwolan do strony przez Proxy-Cache, powoduja
niepotrzebne obciazenie serwera (graficzne), i jest przejawem
niepotrzebnego efekciarstwa. Jesli jednak te argumenty sa
nieprzekonujace polecam:
* http://www.webtools.org/counter/
* http://icount.com/
* http://www.fxweb.holowww.com/tracker/index.shtml
albo skorzystanie z opisu autorstwa Tomasza Pilata (sprawdzony jedynie
z NSCA HTTPd 1.4. i dzialajacy na bazie _Server Side Include_ ):
nalezy zalozyc w katalogu gdzie mamy strone, do ktorej chcemy liczyc
dostepy plik .htaccess
AddType text/x-server-parsed-html index.html
AddType application/x-httpd-cgi count.cgi
- gdzie index.html to nazwa tej strony, a count.cgi nazwa pliku
programu licznika (obie linijki powinny byc zakonczone Enterem). Oto
zawartosc tego drugiego:
#!/usr/bin/perl
open (COUNT,"count") ;
$counter =<COUNT>;
close (COUNT) ;
open (COUNT, ">count") ;
print COUNT +($counter+1) ;
close (COUNT) ;
print $counter;
exit(0) ;
moze zaistniec potrzeba zmiany sciezki do PERLa (to jest
#!/usr/bin/perl). Najlatwiej sprawdzic, gdzie jest PERL piszac:
whereis perl lub which perl Wykonujemy co nastepuje:
touch count
chmod 777 count
chmod 505 .htaccess
chmod 505 count.cgi
W pliku count znajdowac sie bedzie liczba odwiedzin. Umieszczamy na
stronie cos takiego:
Te strone odwiedzilo juz
<!-#exec cmd="/usr/bin/perl count.cgi"->
gosci!
Uwaga cenzora: powinno byc:
Te strone pobrano juz <!-#exec cmd="/usr/bin/perl count.cgi"-> razy
od dnia
zainstalowania licznika lub jego resetowania.
(TP)
10.7 Jak rozpoznac w jakiej przegladarki uzywa odwiedzajacy?
Date: Wed, 09 Apr 1997 02:53:21 +0200
From: Michal Mosiewicz <mimo@lodz.pdi.net>
Re: Redirection - bez klikania
_________________________________________________________________
#!/usr/bin/perl
$ENV{'HTTP_USER_AGENT'} =~ /MSIE/ && do {
print "Location: http://specjalnie.dla.misia/\n\n";
exit;
}
print "Location: http://dla.innych/\n\n";
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
11. Serwery
11.1 Jakie serwery WWW (HTTP) sa dostepne? Jaki serwer wybrac?
Pytanie rzeka... najlepiej spojrzec na strone WebCompare
<http://webcompare.internet.com/> gdzie szczegolowo opisano (i
porownano) wiekszosc dostepnych serwerow WWW.
Ja osobiscie uzywam boa <http://www.boa.org/> - malego, taniego (GNU)
i chodzacego (niezaleznie od ustawien) jako nobody nie zas jako root.
Inni preferuja Apache 1.2 <http://SunSite.ICM.edu.pl/pub/www/apache/>
lub 1.1.3 i wcale sie im nie dziwie - potezne narzedzie, z dosc latwa
integracja z bazami danych, opcjami takimi jak: wirtualny serwer i
uzywane na tyle powszechnie (podobnie jest z sendmailem
<http://www.SendMail.org/> ), ze skutecznie przetestowane ( Netcraft
<http://www.netcraft.com/> donosi ze Apache stanowi ponad 40%
wszystkich uzywanych w Internecie serwerow HTTPd - a nastepny
developer, Microsoft, ma tylko 10% udzialow w rynku ;-). A potencjalne
niebezpieczenstwa mozna zwalczac przez zainstalowanie ,,wrapperow'' i
scian ognia. (wersje 1.2. - dzialaja w trybie HTTP/1.1)
Wartym uwagi produktem (choc po czesci testowym) jest napisany przez
zespol z W3C serwer Jigsaw <http://www.w3.org/pub/WWW/Jigsaw/> (w
Javie wiec naprawde wieloplatformowy, a w dodatku jako jeden z
pierwszych prawie w pelni realizujacy HTTP/1.1).
Ci ktorzy uzywaja w swojej sieci Novella <http://www.Novell.com.pl/>
powinni przyjrzec sie serwerowi YAWN <http://www.cpu.lublin.pl/yawn/>
napisanemu w Lublinie przez Artura Urbanowicza
<mailto:artur@golem.umcs.lublin.pl> (a pozostali powinni to zobaczyc,
chocby dla dokumentacji)
Sa wreszcie tacy, ktorzy lubia placic za... cos co moga otrzymac
niemal za darmo... Tym polecam { ;-)))) } produkty firm:
* Microsoft <http://www.microsoft.com/poland/> (gdy mowa o serwerach
mamy do wyboru _Personal Web Serwer_ , albo _Internet Information
Serwer_ )
* NetScape Comunication <http://home.netscape.com/>
* Lotus/IBM <http://www.lotus.com/> i Lotus Notes wraz serwerem HTTP
Domino <http://www2.lotus.com/domino.nsf/>
_Patrz tez:_
* http://webcompare.internet.com/
11.2 Platforma sprzetowa
Obojetna... Na pytanie: _Jaka platforme sprzetowa wybrac?_ odpowiedz
brzmi: _Nie Unixa, nie MacIntosha, nie MS Windows, a te na ktorej sie
najlepiej znasz i ktorej ufasz... Wazne przy tym by byla to platforma
stabilna (tj. zeby serwer WWW byl dostepny co najmniej przez 23.5
godziny na dobe ;-)._
_Patrz tez:_
* http://www.webcompare.com/
11.3 Obsluga bledow
O klasie danego serwisu (serwera) decyduje nie tylko to jakie uslugi
proponuje, ale takze to jak sobie radzi z sytuacjami nietypowymi - czy
gdy uzytkownik zle wpisze adres krzyczy na niego _Bad URL_ , czy tez
stwierdza _Chyba sie pomyliles. Masz oto skrocony spis mojej
zawartosci, i wybierz prosze, to czego szukales. Mozesz takze
skorzystac z moich uslug wyszukiwawczych_
Sposob reakcji na najbardziej podstawowe bledy (typu 404: file not
found lub 403: Forbiden mozna ustawic w pliku srm.conf (w rodzinie
serwerow z NSCA).
_Patrz tez:_
* NCSA httpd
<http://hoohoo.ncsa.uiuc.edu/docs/setup/ConfigureInfo.html#Directi
ve>
11.4 Strony na haslo
W danym katalogu nalezy umiescic plik .htaccess o zawartosci:
AuthName this page
AuthType basic
AuthUserFile /home/looser/.htpasswd
AuthGroupFile /dev/null
<Limit GET PUT>
require user secret
</Limit>
opis do kodu:
* tekst ,,this page'' mozna zastapic czymkolwiek.
* /dev/null z AuthGroupFile nalezy zastapic nazwa pliku (o ile
chcemy stworzyc grupe)
* plik wymieniony w AuthUserFile powinien znajdowac sie w katalogu
domowym uzytkownika, nie zas w public_html lub innym powszechnie
dostepnym.
Hasla dodaje sie odpowiednim programem:
htpasswd -c /home/looser/.htpasswd secret _(-c jesli tworzymy nowy
plik)_ htpasswd jest w dystrybucji NCSA i Apache, w katalogu _support_
. W przypadku gdy uzytkownikow ma byc wiecej niz kilkudziesieciu,
nalezy przejsc na format DB lub DBM. Przeszukiwanie plikow DB i DBM
jest znacznie szybsze niz zwyklego tekstowego .htpasswd Ustawienia sa
analogiczne, tylko ze zamiast zbioru funkcji Auth* mamy AuthDB* lub
AuthDBM* i do zarzadzania
11.5 Wirtualny serwer
W bardzo wielu przypadkach istnieje potrzeba wykorzystania jednego
komputera do obslugiwania informacji dostarczonych przez kilku roznych
klientow. Problem mozna rozwiazac na kilka roznych sposobow:
1. Informacje kazdego klienta umieszczamy w innej kartotece i
propagujemy odsylacze:
* http://www.nasz.serwer.com.pl/klient1/
* http://www.nasz.serwer.com.pl/klient2/
* ...
* http://www.nasz.serwer.com.pl/klientN/
2. Informacje umieszczamy w osobnych kartotekach i uruchamiamy kilka
serwerow http; kazdy korzystajacy z innego portu. Odsylacze beda
wygladaly wowczas tak:
* http://www.nasz.serwer.com.pl:8001/ dla klient1
* http://www.nasz.serwer.com.pl:8002/ dla klient2
* ...
* http://www.nasz.serwer.com.pl:800n/ dla klient
lub jezeli zarejestrujemy w DNS jako alias dla naszego serwera nazwy
www.klient1.com.pl, ... , www.klientn.com.pl
* http://www.klient1.com.pl:8001/ dla klient1,
* http://www.klient2.com.pl:8002/ dla klient2
* ...
* http://www.klientn.com.pl:800n/ dla klient
Rozwiazania oba sa bardzo proste, ale niezbyt eleganckie. Klient moze
domagac sie wystepowania pod wlasna nazwa i nie godzic sie na zadne
"dopiski". W takiej sytuacji musimy uruchomic "serwery wirtualne".
Musimy:
* miec n wolnych numerow IP,
* zarejestrowac serwery www.klient1.com.pl, ... , www.klient.com.pl
uzywajac tych numerow
* zdobyc odpowiednie oprogramowanie serwera pozwalajacego na jednym
komputerze obsluzyc kilka roznych adresow. Na przyklad Apache
<http://SunSite.ICM.edu.pl/pub/www/apache/>
* spowodowac, by komputer rozpoznawal jako swoje wlasne wszystkie
powyzsze adresy. Mozna to (lub nie mozna) zrealizowac na kilka
roznych sposobow. Zalezy to od konkretnej wersji systemu
operacyjnego i jest poza zakresem zainteresowania niniejszego FAQ.
Najelegantszym rozwiazaniem jest zainstalowanie w komputerze kilku
wirtualnych interfejsow sieciowych. Najmniej eleganckim -
zainstalowanie kilku kart sieciowych :-)
* odpowiednio skonfigurowac i uruchomic serwer WWW.
W ostatecznym ukladzie sytuacja bedzie wygladac tak: na naszym
komputerze bedzie pracowal jeden serwer www, ktory, w zaleznosci od
tego do jakiego adresu "zapuka" klient serwowal bedzie inny zestaw
informacji...
Aby dodac alias IP w Linuxie (z jadrem 2.0) wystarczy (przy
odpowiednio skompilowanym jadrze - opcje Network Aliasing i IP
Aliasing w make config ) wydac polecenie:
/sbin/ifconfig eth0:10 192.168.17.1 broadcast 192.168.17.255 \
netmask 255.255.255.0
Apache (nie rozgryzlem jeszcze do konca mechanizmu dzialania) pozawala
poza tym zdefiniowac kilka serwerow wirtualnych na jednym nr IP.
_________________________________________________________________
<VirtualHost nazwa_wirtualnego>
ServerAdmin webmaster@nazwa_wirtualnego
DocumentRoot /gdzies/w/systemie/
ServerName nazwa_wirtualnego
ErrorLog logs/nazwa_wirtualnego.errors
TransferLog logs/nazwa_wirtualnego.errors
</VirtualHost>
_________________________________________________________________
_Patrz tez:_
*
http://SunSite.ICM.edu.pl/pub/Linux/Documentation/HOWTO/mini/Virtua
l-Web
* wirtualny serwer w NCSA <http://hoohoo.ncsa.uiuc.edu/>
* wirtualny serwer w Apache
<http://SunSite.ICM.edu.pl/pub/www/apache/docs/mod/core.html#virtu
alhost>
11.6 Robot exlusion
Nalezy pogodzic sie z istnieniem rozmaitych robotow w pajeczynie ;-).
To dzieki nim mozna przeszukiwac pajeczyne, to dzieki nim mozliwe jest
tworzenie indywidualizowanych uslug dostarczajacych informacje a nie
dane, wreszcie sprawdzanie poprawnosci powiazan pomiedzy dokumentami.
A to, ze czasem maja ochote sciagnac, dynamicznie tworzone strony,
albo rozmaite niepowolane zasoby (jak na przyklad nieopatrznie
,,odsloniety'' katalog z _wszystkimi_ RFC?) Jest na to rada. Juz w
poczatkach WWW (czyli w lipcu 1994 r. ;-) zostal opracowany
nieformalny standard _for Robot Exclusion _do ktore stosuja sie
wszystkie ,,przyzwoite''
<http://info.webcrawler.com/mak/projects/robots/norobots.html> roboty.
Opiera sie on na sprawdzaniu przez robota istnienia pliku /robots.txt
<http://www.webcrawler.com/robots.txt> zawierajacego polecenia:
* User-agent: (jako parametr nazwa robota
<http://info.webcrawler.com/mak/projects/robots/active.html> *
znaczy - wszystkie)
* Disallow: /nazwa/zasobu (jesli bez nazwy znaczy, ze robot moze
indeksowac wszystko)
. Poza tym istnieja (jeszcze niezbyt powszechnie uznane) zaklecia
<META takie jak np <META name="robots" CONTENT="NOINDEX">
_Patrz tez:_
* http://info.webcrawler.com/mak/projects/robots/norobots.html
* The Standard for Robot Exclusion
<http://www.archive.org/robotexclusion.html>
* Standard for Robot Exclusion Revised
<http://www.kollar.com/robots.html>
* Hypertext Links in HTML - W3C Working Draft
<http://www.w3.org/pub/WWW/TR/WD-htmllink>
11.7 Zagadnienia specyficzne dla poszczegolnych serwerow
Apache
O konfiguracji Apache mozna przeczytac w nastepujacych dokumentach:
* http://SunSite.icm.edu.pl/pub/www/apache/
* Internetowy Indianin, czyli instalacja APACHE'a
<http://www.filg.uj.edu.pl/~lb/apache/>
_________________________________________________________________
Technical Details
Message-ID:
<5s3b3f$iv0$1@sunsite.icm.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!polsl.gliwice.pl!ict.pwr.wroc.pl!news.icm.edu.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!polsl.gliwice.pl!ict.pwr.wroc.pl!news.icm.edu.pl!not-for-mail From: Ziemek Borowski <ziembor@digilab.com.pl> Newsgroups: pl.answers,pl.comp.www Subject: pl.comp.www FAQ - 5/5 - serwery i bezpieczenstwo Followup-To: poster Date: 4 Aug 1997 01:26:07 GMT Organization: PSI DigiLab Sp. z o.o. Lines: 393 Approved: rzm@adm.usenet.pl Distribution: world Message-ID: <5s3b3f$iv0$1@sunsite.icm.edu.pl> Reply-To: Ziemek Borowski <ziembor@ziembor.waw.pl> NNTP-Posting-Host: digilab.digilab.com.pl Mime-Version: 1.0 Keywords: FAQ, WWW, World Wide Web X-Mailer: rpost z suck X-Posting-Frequency: Posted on 1th and 15th day of each month Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit