Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014



Podobne dokumenty
Testy aplikacji webowych

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python

TDD w Django South Sorl Haystack + Whoosh Małe, a cieszy Deployment Koniec. Wspomagacze Django. Jan Filipowski. 25 maja 2010

Programowanie i projektowanie obiektowe

Zaawansowany kurs języka Python

Bezpieczeństwo systemów komputerowych

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Programowanie w Internecie

Quiz Aplikacja internetowa

Laboratorium 2. def detail(request, question_id): return HttpResponse("Patrzysz na pytanie %s." % question_id)

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Serwer WWW na przykªadzie Django cz.3

Kurs rozszerzony języka Python

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Modele. Najcz. Metoda unicode definiuje sposób wyświetlania obiektu w postaci tekstowej. BooleanField - pole logiczne, True/False

Krok po kroku... (czyli jak stworzyć i wydrukować krzyżówkę)

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

Kurs języka Python. Wykład 14. Marcin Młotkowski. 25 stycznia Python i Apache Pythonowe platformy aplikacyjne. Dystrybucja aplikacji w U*IX

Serwer WWW na przykªadzie Django

Jak okiełznać frontend w Django? Piotr Maliński

Czysta architektura (nawet z Django!) Sebas an PyWaw 72

Chatter Aplikacja internetowa

FRONT-END SECURITY SZYMON GRZYBOWSKI NSENSE POLSKA S.A.

Należy zalogować się do starego systemu pocztowego, znajdującego się pod adresem podanym powyżej. Kliknąć 'Options'

instrukcja instalacji i konfiguracji programu Express Talk Spis treści

DOKUMENTY. v Strona 1 z 10

Drobne błędy w portalach WWW

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Certum Certificates For WHMCS. Instalacja, Konfiguracja i Zarządzanie

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

Wybrane działy Informatyki Stosowanej

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Testowanie aplikacji. Kurs języka Ruby

Google Web Toolkit. Piotr Findeisen

Instalacja i konfiguracja rouera ASMAX AR 904u. Neostrada, Netia

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Internetowe bazy danych

Specyfikacja techniczna. mprofi Interfejs API

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Plan wykładu. Tworzenie programów dla platformy.net. Kontrolki list. Kontrolki weryfikujące. Wiązanie danych. Dostęp do danych

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Aplikacje www laboratorium

Zaawansowany kurs języka Python

Aplikacje internetowe

Język Python (2) Język Python (2) 1/36

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Procedura migracji opisana jest w zrzutach poniżej. 1. Należy pobrać aplikację Mozilla Thunderbird Portable Edition

CMS Admin instrukcja administratora

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Projektowanie Aplikacji Internetowych Temat: Serwer wymiany plików Documentation Page 1

ATAKI TYPU CROSS-SITE SCRIPTING

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Protokół HTTP 1.1 *) Wprowadzenie. Jarek Durak. rfc2616 źródło

SSI Web 8. (badania.kozminski.edu.pl) Instrukcja logowania i uruchamiania ankiety

Technologie informacyjne: Excel i Python

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Tworzenie i wykorzystanie usług

Instrukcja obsługi i konfiguracji telefonu Yealink T32G (v )

MVC w praktyce tworzymy system artykułów. cz. 1

Programowanie w Ruby

Dodawanie nowego abonenta VOIP na serwerze Platan Libra

PRZETWARZANIE ROZPROSZONE ZADAN` Mariusz Gil 4Developers 2012, Poznań

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Wstęp. Ale po co? Implementacja

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Dokumentacja fillup - MS SQL

I. Lista tabel w bazie danych

Technologie internetowe


Studium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Spis treści. Ulotka 2 v.7.3

Wprowadzenie do framework a Symfony

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Dokumentacja API sender sms

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Wątki i komunikacja między nimi w języku Python

APLIKACJA SHAREPOINT

Spring, Maven, Postman, Debugger

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

Programowanie. Dodatek - uzupełnienie wiadomości. mgr inż. Krzysztof Szwarc. Sosnowiec,

Kurs programowania aplikacji bazodanowych

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Jak pisać testy? Wersja 2

Obsługa incydentów bezpieczeństwa: część I, z punktu widzenia menadżera. OWASP The OWASP Foundation

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Cisco SPA1xx (SPA112, SPA122)

Aplikacje webowe z wykorzystaniem Node.js oraz Express

1 Wprowadzenie do J2EE

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Transkrypt:

Aplikacje WWW Krzysztof Ciebiera 3 kwietnia 2014

Bezpieczeństwo Clickjacking CSRF Cross site scripting (XSS) Migracje ContentType Tłumaczenia Testowanie - RequestFactory

Clickjacking Użytkownik odwiedza zła stronę. Strona zawiera przezroczyste tło w postaci iframe. Użytkownik klika na link z z-index = -1. Zobaczmy przykład (clickjacking.html)

Jak się możemy zabezpieczyć Możemy używać nagłówka X-Frame-Options DENY - strona nie może być wyświetlana w ramce SAMEORIGIN - strona może być wyświetlana w tej samej domenie ALLOW-FROM uri - strona może być wyświetlana z uri (uwaga!! to nie jest jeszcze wspierane)

Technicznie MIDDLEWARE_CLASSES = (... django. middleware. c l i c k j a c k i n g. XFrameOptionsMiddleware,... ) ========= from django. h t t p import HttpResponse from django. views. decorators. c l i c k j a c k i n g xframe_ options_ exempt import @xframe_options_exempt def ok_to_load_in_a_frame ( request ) : return HttpResponse ( " This page i s safe to load " " i n a frame on any s i t e. " )

Jak działa CSRF Ciasteczko CSRF jest ustawiane na losowa wartość. Ukryte pole formularza csrfmiddlewaretoken jest ustawiane przez programistę w szablonie. Dla wszystkich żadań nie używajacych HTTP GET, HEAD, OPTIONS lub TRACE ciasteczko CSRF musi być ustawione przez przegladarkę i musi się pokrywać z polem csrfmiddlewaretoken. W przeciwnym wypadku mamy bład 403.

Cross site scripting (XSS) name = " < s c r i p t > a l e r t ( h e l l o ) < / s c r i p t > " Hello, { { name } }. > Hello, < s c r i p t > a l e r t ( h e l l o ) </ s c r i p t > Zmiany: < < > > (single quote) &#39; "(double quote) " & & Uwaga Nie zadziała dla: var = class1 onmouseover= j a v a s c r i p t : func ( ) ; ==== < s t y l e class = { { var } } >... < / s t y l e >

Migracje Migracje to sposób na zarzadzanie zmianami w strukturze modeli w ORM. migrate, zastosowuje migrację, wycofuje migrację wypisuje status migracji. makemigrations, tworzy nowa migrację w oparciu o zmiany w modelach. Migracje s a oddzielne dla każdej z aplikacji (więc część aplikacji może ich nie używać).

Przebieg pracy $ python manage. py makemigrations M i g r a t i o n s for books : 0003_auto. py : A l t e r f i e l d author on book $ python manage. py migrate Operations to perform :... Synchronizing apps w i t h o u t m i g r a t i o n s : Creating t a b l e s... Running m i g r a t i o n s : Applying books.0003 _auto... OK

Jak wyglada migracja schemat from django. db import migrations, models class M i g r a t i o n ( m i g r a t i o n s. M i g r a t i o n ) : dependencies = [ ( " m i g r a t i o n s ", " 0001 _ i n i t i a l " ) ] operations = [ m i g r a t i o n s. DeleteModel ( " T r i b b l e " ), m i g r a t i o n s. AddField ( " Author ", " r a t i n g ", models. I n t e g e r F i e l d ( d e f a u l t =0)) ]

Jak wyglada migracja dane from django. db import models, m i g r a t i o n s def combine_names ( apps, schema_ editor ) : Person = apps. get_model ( " app ", " Person " ) for person in Person. o b j e c t s. a l l ( ) : person. name = "%s %s " % ( person. first_name, person. last_name ) person. save ( ) class M i g r a t i o n ( m i g r a t i o n s. M i g r a t i o n ) : dependencies = [ ( app, 0001 _ i n i t i a l ), ] operations = [ m i g r a t i o n s. RunPython ( combine_names ), ]

ContentType model ContentType Aplikacja contenttypes definiuje model ContentType. Jego instancje reprezentuja informacje o innych modelach. Sa tworzone automatycznie wraz z modelami. ContentType pozwala na tworzenie generycznych aplikacji (np. admin) jak również generycznych dowiazań (np. komentarze)

ContentType przykład >>> from django. c o n t r i b. contenttypes. models import >>> user_type = ContentType. o b j e c t s. get ( app_label= " >>> user_type <ContentType : user > >>> user_type. g e t _ o b j e c t _ f o r _ t h i s _ t y p e ( username= Gu >>> user_type. model_class ( ) <class django. c o n t r i b. auth. models. User > <User : Guido >

Tłumaczenia Aby projekt w Django był automatycznie tłumaczony oznaczamy część tekstów jako przeznaczone do tłumaczenia. Django udostępnia mechanizmy pozwalajace na zapisanie oznaczonych tekstów w plikach messages. Po przetłumaczeniu tych plików translacja następuje automatycznie.

Tłumaczenia przykład from django. u t i l s. t r a n s l a t i o n import u g e t t e x t as _ from django. h t t p import HttpResponse def my_view ( request ) : output = _ ( " Welcome to my s i t e. " ) return HttpResponse ( output ) def my_view ( request ) : words = [ Welcome, to, my, s i t e. ] output = _ (. j o i n ( words ) ) return HttpResponse ( output ) def my_view ( request ) : # T r a n s l a t o r s : This message appears on the home output = u g e t t e x t ( " Welcome to my s i t e. " )

Tłumaczenia przykład szablony < t i t l e >{% t r a n s " This i s the t i t l e. " %}</ t i t l e > < t i t l e >{% t r a n s myvar %}</ t i t l e > {% b l o c k t r a n s %} This s t r i n g w i l l have { { value } } i n s i d e. {% endblocktrans %} {% b l o c k t r a n s w ith amount= a r t i c l e. p r i c e count years= That w i l l cost $ { { amount } } per year. {% p l u r a l %} That w i l l cost $ { { amount } } per { { years } } years {% endblocktrans %}

Tłumaczenia proces tłumacznia django admin. py makemessages l p l p l i k. po # : path / to / python / module. py :23 msgid " Welcome to my s i t e. " msgstr " " django admin. py compilemessages

Testowanie HTTP from django. c o n t r i b. auth. models import User from django. t e s t import TestCase from django. t e s t. c l i e n t import RequestFactory class SimpleTest ( TestCase ) : def setup ( s e l f ) : s e l f. f a c t o r y = RequestFactory ( ) s e l f. user = User. o b j e c t s. create_user ( username= jacob, email= jacob@..., password= top_secret ) def t e s t _ d e t a i l s ( s e l f ) : request = s e l f. f a c t o r y. get ( / customer / d e t a i l s ) request. user = s e l f. user response = my_view ( request ) s e l f. assertequal ( response. status_code, 200)