Article View: pl.answers
Article #305pl.comp.www FAQ - 5/5 - serwery i bezpieczenstwo
From: Ziemek Borowski
Date: Thu, 18 Dec 1997 15:39
Date: Thu, 18 Dec 1997 15:39
394 lines
16606 bytes
16606 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 URL:
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 URL: http://hughes.com.au/ (choc baza ta dostepna jest za
darmo jedynie dla instytucji edukacyjnych),
* miniSQL - T.c.X. Data Konsult URL: http://www.tcx.se/
* dostepny teoretycznie za darmo choc na dziwnych zasadach
MICRO/CDS/ISIS URL: http://www.medianet.com.pl/%7Ecc/ rodem z
UNESCO.
* Oracle URL: http://www.oracle.com/
* Essentia URL: http://www.inter-soft.com/products/essentia/
_Patrz tez:_
* Michal Mosiewicz _Linux i bazy danych_ {w:} Linux+ URL:
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 URL: http://www.eit.com/software/swish/
* GlimpseHTTPd URL: http://glimpse.cs.arizona.edu/ghttp/ (kopia na
SunSite.ICM) URL: http://SunSite.ICM.edu.pl/pub/unix/glimpse/
* ht://Dig URL: http://htdig.sdsu.edu/ (RPM na SunSite.ICM) URL:
http://SunSite.ICM.edu.pl/pub/Linux/redhat-contrib/i386/
* freeWais URL:
http://ls6-www.informatik.uni-dortmund.de/ir/projects/freeWAIS-sf/
* Exite URL: http://www.exite.com/ (choc jeszcze nie na Linuxa)
* DEC AltaVista URL: 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";
_________________________________________________________________
_________________________________________________________________
Poprzedni rozdzial Spis tresci
_________________________________________________________________
11. Serwery
11.1 Jakie serwery WWW (HTTP) sa dostepne? Jaki serwer wybrac?
Pytanie rzeka... najlepiej spojrzec na strone WebCompare URL:
http://webcompare.internet.com/ gdzie szczegolowo opisano (i
porownano) wiekszosc dostepnych serwerow WWW.
Ja osobiscie uzywam boa URL: http://www.boa.org/ - malego, taniego
(GNU) i chodzacego (niezaleznie od ustawien) jako nobody nie zas jako
root.
Inni preferuja Apache 1.2 URL:
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 URL: http://www.SendMail.org/ ), ze
skutecznie przetestowane ( Netcraft URL: 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 URL: 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 URL:
http://www.Novell.com.pl/ powinni przyjrzec sie serwerowi YAWN URL:
http://www.cpu.lublin.pl/yawn/ napisanemu w Lublinie przez Artura
Urbanowicza URL: 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 URL: http://www.microsoft.com/poland/ (gdy mowa o
serwerach mamy do wyboru _Personal Web Serwer_ , albo _Internet
Information Serwer_ )
* NetScape Comunication URL: http://home.netscape.com/
* Lotus/IBM URL: http://www.lotus.com/ i Lotus Notes wraz serwerem
HTTP Domino URL: 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 URL:
http://hoohoo.ncsa.uiuc.edu/docs/setup/ConfigureInfo.html#Directiv
e
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 URL:
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 URL: http://hoohoo.ncsa.uiuc.edu/
* wirtualny serwer w Apache URL:
http://SunSite.ICM.edu.pl/pub/www/apache/docs/mod/core.html#virtua
lhost
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'' URL:
http://info.webcrawler.com/mak/projects/robots/norobots.html roboty.
Opiera sie on na sprawdzaniu przez robota istnienia pliku /robots.txt
URL: http://www.webcrawler.com/robots.txt zawierajacego polecenia:
* User-agent: (jako parametr nazwa robota URL:
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 URL:
http://www.archive.org/robotexclusion.html
* Standard for Robot Exclusion Revised URL:
http://www.kollar.com/robots.html
* Hypertext Links in HTML - W3C Working Draft URL:
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 URL:
http://www.filg.uj.edu.pl/~lb/apache/
_________________________________________________________________
Technical Details
Message-ID:
<67bg4a$c2o$1@sunsite.icm.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.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!news.icm.edu.pl!not-for-mail From: Ziemek Borowski <ziembor@linux.ceu.edu.pl> Newsgroups: pl.comp.www,pl.answers Subject: pl.comp.www FAQ - 5/5 - serwery i bezpieczenstwo Followup-To: poster Date: 18 Dec 1997 15:39:54 GMT Organization: ;-) Lines: 395 Approved: rzm@adm.usenet.pl Distribution: world Message-ID: <67bg4a$c2o$1@sunsite.icm.edu.pl> Reply-To: ziemek.borowski@ziembor.waw.pl NNTP-Posting-Host: linux.ceu.edu.pl Mime-Version: 1.0 X-Mailer: rpost z suck Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit