background image

1.  Opisz zastosowania standardu MIME w protokołach internetowych. 

MIME, czyli Multipurpose Internet Mail Extension, jest standardem pozwalającym przesyład 
w  sieci  Internet  wszelkie  dane  (teksty,  grafikę,  zdjęcia,  dźwięki,  muzykę,  programy) 
za  pomocą  standardowych  protokołów  jak  smtp  czy  http.  Protokoły  te  są  protokołami 
tekstowymi, więc wszystkie dane przesyłane są w formie tekstu. Typ MIME pozwala określid 
jakim danym odpowiada każdy ciąg znaków przesyłany poprzez protokół. Dzięki temu można 
przesyład  pliki  między  różnymi  komputerami  z  różniącym  się  oprogramowaniem,  a  nawet 
systemem operacyjnym, i zostaną one poprawnie odczytane (jeśli oba komputery posługują 
się typami MIME). Standard MIME pozwala określid również format kodowania przesyłanego 
tekstu (encoding: quotedprintable lub base64), oraz zestaw używanych znaków (charset: np. 
ISO-8859-2). 
 

 
Multipurpose Internet Mail Extensions  
Określa format pliku który będzie przesyłany, np. text/html.  
Aplikacja  po  stronie  serwera,  którą  piszesz  musi  określid  poprawny  typ  MIME,  który  jest 
przesyłany.  
Standard MIME definiuje różne sposoby kodowania przesyłanych wiadomości:  

 

Quoted-printable  

 

Base64 

 

2.  Porównaj JDBC i źródła danych. 

Żródła  danych  preferują  mechanizm  uzyskiwania  połączeo  z  bazą  danych  („fabryka 
połączeo”)  Reprezentują  rzeczywiste  źródła  danych,  najczęściej  relacyjne  bazy  danych 
Typowo tworzone przez serwer w oparciu o zawartośd pliku konfiguracyjnego i udostępniane 
jako  zasób  w  JNDI  (Java  Naming  and  Directory  Interface)  jest  interfejsem  Javy  usług 
katalogowych,  który  umożliwia  wyszukiwanie  danych  oraz  obiektów  za  pomocą  nazw  przy 
pomocy  serwerów  nazw  (LDAP,OID,...).  Mogą  implementowad  mechanizm  connection 
pooling:  utrzymywana  pula  otwartych  połączeo  z  bazą  danych,  gdy  aplikacja  otwiera 
połączenie,  otrzymuje  jedno  z  połączeo  z  puli,  gdy  aplikacja  zamyka  połączenie,  jest  ono 
zwracane do puli i będzie mogło byd ponownie wykorzystane. 
 

 
Data Sources:  
+ łatwośd użycia (znany interfejs i mechanizmy obsługi bazy danych), 
+ uniwersalnośd (działa na każdej platformie), 
+ współpraca z JNDI, 
+ connection pooling/caching, 
+ umożliwia implementację rozproszonych transakcji, 
+ przenaszalny, niezależny od dostawcy mechanizm uzyskiwania połączeo z bazą danych, 
- koniecznośd rejestracji źródła danych w JNDI. 
 
JDBC:  
+ łatwośd użycia (znany interfejs i mechanizmy obsługi bazy danych),  
+ uniwersalnośd (działa na każdej platformie),  

background image

- brak zarządzania połączeniami, 
- brak możliwości przeprowadzania rozproszonych transakcji, 
- klasa sterownika JDBC i adres JDBC URL bazy danych zaszyte w kodzie aplikacji. 
 

3.  Podaj różnicę (główną) w przetwarzaniu przez serwer plików źródłowych PHP i JSP. 

PHP jest  językiem skryptowym i podczas generowania odpowiedzi na żądanie jego kod jest 
interpretowany,  JSP  natomiast  kompiluje  kod  servletu,  który  już  jako  aplikacja  generuje 
odpowiedzi na żądania. 
 

4.  Na czym polega negocjacja treści (content negotiation). 

Content  Negotiation  polega  na  wygenerowaniu  odpowiedzi  na  żądanie  klienta  w  postaci 
najbardziej  odpowiadającej  jego  potrzebom  i  odesłaniu  jej  z  odpowiednim typem  zgodnym 
z przygotowaną zawartością. Np. metoda negocjowania zawartości po stronie serwera polega 
na serwowaniu dokumentu XHTML jako Content-type: application/xhtml+xml przeglądarkom 
obsługującym  ten  typ,  a  pozostałym  nie  obsługującym  tego  typu  jako  dokumentu  HTML 
z  Content-type:  text/html  oraz  na  dostosowaniu  zawartości  tego  dokumentu  aby  była 
możliwie zgodna z typem deklarowanym. 
 

5.  Podaj cel umieszczania na początku dokumentu XHTML dyrektywy DOCTYPE. 

DOCTYPE  -  element  definiuje  standard  języka  HTML.  Wskazuje  ścieżkę  do  pliku  DTD,  który 
z grubsza opisuje strukturę dokumentu (dozwolone i wymagane tagi, atrybuty oraz encje).  
- DTD jest potrzebny przeglądarkom  
- DTD jest potrzebny walidatorom 
 
Transitional - przejściowy, napisany zgodnie z deklarowanym standardem 4.0 i dopuszczający 
inne tagi  
Strict  -  ścisły,  napisany  zgodnie  z  deklarowanym  standardem  i  nie  dopuszczający  innych 
tagów  
Frameset  -  dla  ramek,  napisany  zgodnie  z  deklarowanym  standardem  i  dopuszczający  inne 
tagi;stosowany gdy strona zawiera ramki. 
 

6.  Podaj różnice między protokołem HTTP 1.0 a HTTP 1.1 i skomentuj każdą z nich. 

HTTP 1.1  

 

W zapytaniu HTTP 1.1 określany jest host docelowy, czyli zamiast "Host: www.xxx.pl" 
co pozwala stosowad virtual-hosty, czyli kilka domen (lub poddomen) na tym samym 
ip. 

 

Potokowośd  -  umożliwia  wysyłanie  wielu  zapytao  w  jednym  czasie  bez  oczekiwania 
na  odpowiedź  pojedyoczego  zapytania  zmniejsza  czas  oczekiwania  na  odpowiedz, 
połączenie jest lepiej wykorzystane. 

 

Używa mniej połączeo TCP - oszczędza CPU i pamięd komputera i mniejsze obciążenie 
sieci  

 

Zgłaszanie błędów  bez zrywania połączenia TCP  -  umożliwia klientowi  dopasowanie 
do nowych warunków pracy  

 
 

background image

HTTP 1.0  

 

Słaba wbudowana autoryzacja BASIC. 

 

 

7.  Dokonaj w formie tabelarycznej porównania mechanizmów CGI i FastCGI. 

FastCGI dziedziczy wady CGI (CGI i FastCGI): 
- przeplatanie kodu programu z znacznikami HTML  
- niskie bezpieczeostwo  
 
Lecz dodaje kilka nowych wad i dwie zalety (FastCGI):  
+ rozproszone przetwarzanie - aplikacje FCGI mogą działad na zdalnych maszynach, 
przesyłając jedynie wyniki operacji do serwera wywołującego  
+ wydajnośd modułów  
- słaba dokumentacja  
- wymaga niestandardowych dodatków  
- utrudniona administracja 
 

8.  Na czym polega XSS. Jakie strony biorą udział i jakie mają zadania. 

XSS  –  Sposób  ataku  na  serwis  WWW  polegający  na  osadzeniu  w  treści  atakowanej  strony 
kodu  (zazwyczaj  JavaScript),  który  wyświetlony  innym  użytkownikom  może  doprowadzid 
do  wykonania  przez  nich  niepożądanych  akcji.  Skrypt  umieszczony  w  zaatakowanej  stronie 
może obejśd niektóre mechanizmy kontroli dostępu do danych użytkownika. 
 

9.  Opisad  i  narysowad  (diagram  sekwencji)  przebieg  sesji  z  wykorzystaniem  przepisywania 

URL. 
Automatyczne  przepisywanie  URL'a  to  jedna  z  nowych  możliwości  PHP  4,  pozwalająca 
dodawad  session  ID  do  wszystkich  linków  na  witrynie.  Aby  włączyd  tę  możliwośd  musimy 
skompilowad PHP z opcją --enable-trans-id. Od tej chwili identyfikator sesji będzie dodawany 
do  wszystkich  URL'i  do  stron  napisanych  w  PHP.  Oczywiście  przepisywanie  URL'a  znacznie 
obciąża serwer. Cookie są zaś ustawiane tylko raz nie powodując przepisywania URL'a.  
<rysunek> 
 

10. Na czym polega technika przetwarzania potokowego (pipelining) w HTTP 1.1? 

W  odróżnieniu  od  działania  http  1.0  gdzie  po  wysłaniu  pojedyoczego  żądania  klient  musiał 
czekad  na  odpowiedź  od  serwera  w  1.1  możemy  wysyład  dowolnie  dużą  liczbę  żądao  przy 
jednym połączeniu nie oczekując na odpowiedź od serwera. Ważne  jest to, że  serwer musi 
nadsyład odpowiedzi w takiej samej kolejności w jakiej przychodziły do niego żądania. 
 

11. Jakie cechy HTTP 1.1 zwiększają jego wydajnośd. 

 

Potokowośd,  

 

Utrzymywanie jednego połączenia, proxy, 

 

Proxy - w pamięci proxy są przetrzymywane wcześniejsze strony bądź odpowiedzi na 
niektóre zapytania. 

 

12. Co to jest Front Controller. 

background image

Wzorzec projektowy. Zapewnia istnienie obiektu, ktory jest centralnym wejsciem do aplikacji 
i obsluguje rzadania klienta. Często stosowany ze wzorcem MVC. 
 

13. Wyjaśnij różnicę między użyciem znaczników. 

a)<%@  include  file="strona.jsp"%>  -  File  okresla  zasob,  ktory  ma  byc  wlaczony  na  etapie 
kompilacji.  
 
b)<jsp:include  page="strona.jsp"/>  -  Zasob  jest  dolaczany,  w  momencie  dzialania,  nie 
kompilacji. 
 

14. Czy Java i JavaScript to synonimy tego samego języka. Opisz. 

Nie.  

 

JavaScript  jest  interpretowany  przez  przegladarke,  Java  jest  kompilowany  do  kodu 
bajtowego, ktory nastepnie jest uruchamiany przez maszyne wirtualna.  

 

JS dziala tylko po stronie klienta, Java zarowno po stronie klienta jak i serwera.  

 

W JS zmienne nie musza byd deklarowane, w Javie muszą.  

 

Java może zostad wykorzystana w tworzeniu samodzielnych aplikacji, JS nie. 

 

JS to język skryptowy, Java nie. 
 

15. Zapobieganie trawersowaniu katalogów. 

Atak metodą "Path Traversal" jest możliwy w stosunku do tych aplikacji, które udostępniają 
użytkownikom dane pobierane bezpośrednio z plików dyskowych: 
 
Np. zamiast:  
URL:www.mbank.pl/moje_konto/saldo.php  
 
wpisanie:  
URL:www.mbank.pl/moje_konto/../../etc/passwd  
 
Podstawową  metodą  ochrony  przed  tego  typu  atakami  jest  walidacja  parametrów 
przekazywanych przez użytkownika tak, aby uniemożliwid stosowanie symboli w rodzaju "..", 
"/", itp. 
 

16. Wymieo techniki stosowane do przejmowania sesji i opisz technikę obrony

 

podsłuchanie transmisji i wyciągnięcie id sesji  

  korzystad z połączeo szyfrowanych 

 

odgadnięcie - przewidywalne wartości identyfikatora sesji  

  zastosowanie silnego algorytmu losowego 

 

wykradzenie  -  przez  dziure  w  oprogramowaniu  strony  użycie  XSS,  wstawienie 
obrazka ze skryptem, który podczas ładowania wysyła twój ID na poczte  

  dbanie o dobry bezpieczny kod portalu 

 
 
 

17. Co to oznacza, że dokument XML jest dobrze sformatowany (well-formated).  

background image

Mówimy o dokumencie, że jest poprawny składniowo (ang. well-formed), jeżeli jest zgodny 
z  regułami  składni  XML.  Reguły  te  obejmują  m.in.  koniecznośd  domykania  wszystkich 
znaczników.  Dokument  niepoprawny  składniowo  nie  może  byd  przetworzony  przez  parser 
XML.  

 

nazwy elementów nie mogą zaczynad się od znaku łącznika -, kropki, cyfry  

 

każdy  element  musi  zaczynad  się  znacznikiem  początku  elementu  np.  <data>  oraz 
kooczyd  identycznym  znacznikiem  kooca  elementu  np.  </data>,  elementy  puste 
(<element-pusty />)  

 

musi zawierad jeden element główny zwany root 
 

18. Na czym polega sprawdzanie poprawności strukturalnej (validity) dokumentu XML. Opisz 3 

dowolne reguły na przykładowym kodzie. Jak sprawdzid poprawnośd dokumentu XML. 
Mówimy  o  dokumencie,  że  jest  poprawny  strukturalnie  (ang.  valid),  jeżeli  jest  zgodny 
z  definicją  dokumentu,  tzn.  dodatkowymi  regułami  określonymi  przez  użytkownika. 
Do precyzowania tych reguł służą specjalne języki. Najpopularniejszymi są DTD, XML Schema 
oraz RELAX NG. 
 

19.