Thread View: pl.answers
1 messages
1 total messages
Started by Ziemek Borowski
Mon, 04 Aug 1997 01:26
pl.comp.www FAQ - 5/5 - serwery i bezpieczenstwo
Author: 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/>
_________________________________________________________________
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads