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),
- 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
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.
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).
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.