Kurs rozszerzony języka Python

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

Programowanie w Ruby

Kurs rozszerzony języka Python

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014

Testowanie aplikacji. Kurs języka Ruby

Bezpieczeństwo systemów komputerowych

Projektowani Systemów Inf.

Programowanie w Ruby

Kontrola dostępu w ASP.NET

Zaawansowany kurs języka Python

Baza danych do przechowywania użytkowników

Aspekty bezpieczeństwa aplikacji internetowych

Języki programowania wysokiego poziomu. Forum

Języki programowania wysokiego poziomu. Ćwiczenia

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

Chatter Aplikacja internetowa

Technologie Internetowe Raport z wykonanego projektu Temat: Internetowy sklep elektroniczny

Wybrane działy Informatyki Stosowanej

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

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Serwer WWW na przykªadzie Django cz.3

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

OWASP. The Open Web Application Security Project. OWASP Top rc1. Dziesięć najbardziej krytycznych zagrożeń w web aplikacjach

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

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

Laboratorium 7 Blog: dodawanie i edycja wpisów

Języki programowania wysokiego poziomu. Blog

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

Integracja systemu trigocms! z platformą Facebook

Kurs rozszerzony języka Python

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Aplikacje www laboratorium

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

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Backend Administratora

Dokumentacja smsapi wersja 1.4

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Programowanie i projektowanie obiektowe

Dokumentacja techniczna API systemu SimPay.pl

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Instrukcja użytkownika. Panel Administratora CreamCRM

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

Quiz Aplikacja internetowa

Modele danych walidacja widoki zorientowane na model

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

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Program szkolenia: Bezpieczny kod - podstawy

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Aplikacje WWW - laboratorium

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

Cześć II SIWZ: Szczegółowy Opis Przedmiotu zamówienia

Panel administracyjny serwera: admin.itl.pl

Podstawy technologii WWW

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

Kurs języka Ruby. Ruby on Rails ActionPack

The OWASP Foundation Session Management. Sławomir Rozbicki.

Drobne błędy w portalach WWW

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

INSTRUKCJA OBSŁUGI wersja 1.0.2

Program szkolenia: Symfony, nowoczesny framework PHP

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu.

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Webapplication Security Pentest Service

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

1. Rejestracja 2. Logowanie 3. Zgłaszanie nowego wniosku projektowego

Instrukcja do SIOEPKZ

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

11. Autoryzacja użytkowników

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

TIN Techniki Internetowe zima

PHP: bloki kodu, tablice, obiekty i formularze

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015

Udostępnianie klientom zasobów serwera

Dokumentacja Administratora portalu. aplikacji. Wirtualna szkoła

Oracle Application Express -

Bazy Danych i Usługi Sieciowe


Rejestracja i Logowania - PHP/MySQL

Programowanie w Internecie

Skrócona instrukcja korzystania z Platformy Zdalnej Edukacji w Gliwickiej Wyższej Szkole Przedsiębiorczości

KUP KSIĄŻKĘ NA: PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA

Przewodnik użytkownika (instrukcja) AutoMagicTest Spis treści

Podstawy technologii WWW

Instalacja systemu zarządzania treścią (CMS): Joomla

INSTRUKCJA INSTALACJI PŁATNOŚCI TRANSFERUJ.PL

DHL24. Główny Użytkownik. i Przesyłka Serwisowa. Dokumentacja użytkownika końcowego

0.1 Logowanie do serwisu

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

4. Podstawowa konfiguracja

Przewodnik... Budowanie listy Odbiorców

Diagnoza Szkolna Pearsona. Instrukcja obsługi

Serwer WWW na przykªadzie Django

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Aplikacje internetowe

Transkrypt:

Środowisko Django, cz. 3 19 stycznia 2018

Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4

Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4

Klasa SimpleTestCase SimpleTestCase Alternatywna (djangowa) klasa do testów z dodatkowymi asercjami.

Dodatkowe asercje asserthtmlequal(html1, html2) Porównanie dwóch plików html; ignoruje białe znaki, kolejność atrybutów. assertinhtml(needle, haystack) Wyszukiwanie fragmentu w html u. asserttemplateused(response, template) Sprawdzenie, czy użyto do wygenerowania odpowiedzi wskazanego szablonu

I inne (np. formularze).

Plan wykładu Konstrukcja formularzy Walidacja i zapis 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4

Przykładowa aplikacja Konstrukcja formularzy Walidacja i zapis System Zapisy, modele Wykladowca Student Wyklad

Przypomnienie Konstrukcja formularzy Walidacja i zapis Modele Typy danych. Co można robić z wartościami zapamiętywanie/odtwarzanie edycja/tworzenie

Edycja wartości Konstrukcja formularzy Walidacja i zapis ręczne zbudowanie formularza w html u; zdefiniowanie obiektu (pod)klasy forms.form; skorzystanie z klasy dedykowanej.

Konstrukcja formularzy dla modeli Konstrukcja formularzy Walidacja i zapis from django.forms import ModelForms from wyklad.zapisy.models import Wyklad class WykladForm(ModelForm): class Meta: model = Wyklad fields = [ tytul, opis, ects ]

Co mamy w wyniku Konstrukcja formularzy Walidacja i zapis model class Wyklad(models.Model): nazwa = models.charfield(max length=140) ects = models.integerfield() wykladowca = models.foreignkey(wykladowca) Ręczny formularz class WykladForm(forms.Form): nazwa = forms.charfield(max length=140) ects = forms.integerfields() wykladowca = forms.modelchoicefield(queryset=wykladowca.objects.all())

Konstrukcja formularzy Walidacja i zapis Definiowanie pól do edycji: uzupełnienie Edycja wszystkich pól class WykladForm: class Meta: model = Wyklad fields = [ all ] Zmiana domyślnych ustawień class WykladForm(ModelForm): class Meta: model = Wyklad fields = [ tytul, opis ] widgets = { opis : Textarea(attrs={ cols : 80, rows : 20}} }

Przypomnienie Konstrukcja formularzy Walidacja i zapis ModelForm.is valid()

Zapis danych Konstrukcja formularzy Walidacja i zapis Obiekty klasy ArticleForms implementują metodę save()

Scenariusze Konstrukcja formularzy Walidacja i zapis Nowy obiekt w = WykladForm(request.POST) nowy wyklad = w.save()

Scenariusze Konstrukcja formularzy Walidacja i zapis Nowy obiekt w = WykladForm(request.POST) nowy wyklad = w.save() Istniejący obiekt w = Wyklad.objects.get(id=13) w = WykladForm(request.POST, instance=w) nowy wyklad = w.save()

Konstrukcja formularzy Walidacja i zapis.save() waliduje formularz.

Plan wykładu Ograniczenie dostępu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4

Ograniczenie dostępu django oferuje domyślnie system użytkowników; system uprawnień; formularze i widoki do logowania.

Użytkownicy Ograniczenie dostępu Utworzenie użytkowników Z panelu administracyjnego

Użytkownicy Ograniczenie dostępu Utworzenie użytkowników Z panelu administracyjnego podstawowe atrybuty modelu User username password email first name, last name

Hasła Ograniczenie dostępu Hasła są przechowywane w postaci hasza, z losową solą i informacją o algorytmie haszowania. Zmiana hasła user = User.objects.get(...) user.set password( nowehaslo ) user.save()

Weryfikacja użytkownika Ograniczenie dostępu from django.contrib.auth import authenticate user = authenticate(username= mm, password= 123456 ) if user is not None:...

Weryfikacja użytkownika Ograniczenie dostępu from django.contrib.auth import authenticate user = authenticate(username= mm, password= 123456 ) if user is not None:... Weryfikacja if request.user.is authenticated(): # zrób coś else : # anonimowy użytkownik

logowanie Ograniczenie dostępu tylko weryfikuje, ale nie tworzy sesji dla użytkownika.

logowanie Ograniczenie dostępu tylko weryfikuje, ale nie tworzy sesji dla użytkownika. from django.contrib.auth import authenticate, login def login view(request): username = request.post[ username ] password = request.post[ password ] user = authenticate(username=username, password=password) if user is not None: if user.is active: login(request, user) # Przekieruj na odpowiednią stronę. else : # informacja o zablokowanym koncie else : # Zgłoś błąd logowania.

Wylogowanie Ograniczenie dostępu from django.contrib.auth import logout def logout view(request): logout(request)

Rozwiązanie proste Ograniczenie dostępu from django.shortcuts import redirect def tajne view(request): if not request.user.is authenticated(): return redirect( /login/?next=%s % request.path)

Inne rozwiązanie Ograniczenie dostępu wersja z dekoratorem from django.contrib.auth.decorators import login required @login required def tajne view(request): W razie braku autentykacji przekierowuje na stronę określoną w settings.login URL.

Dodatkowe domyślne mechanizmy Ograniczenie dostępu system grup użytkowników; system uprawnień.

Na koniec Ograniczenie dostępu Czego nie ma w standardowym django sprawdzanie siły hasła wsparcie dla innych systemów użytkowników; ograniczenie prób nieudanego logowania.

Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4

Hosting Django www.heroku.com: hobbistyczne projekty: free, obsługa Ruby, Java, Scala, Python, Django,... www.pythonanywhere.com: od 0$/miesiąc; www.webfaction.com: Django, PHP, Perl, Rails,... https://www.linode.com/: Linux na wirtualnej maszynie

Hosting Django www.heroku.com: hobbistyczne projekty: free, obsługa Ruby, Java, Scala, Python, Django,... www.pythonanywhere.com: od 0$/miesiąc; www.webfaction.com: Django, PHP, Perl, Rails,... https://www.linode.com/: Linux na wirtualnej maszynie http://djangohosting.com/ Strona z odnośnikami do Djangowych hostingów z komentarzami.

Mechanizmy bezpieczeństwa domyślny HTML escaping Zamiana tagów html w szablonach: < na < > na > na &#39; & na & Użycie HTTPS zamiast HTTP Trzymanie plików źródłowych poza katalogiem udostępnionym serwerowi WWW.

Cross site scripting (XSS) Opis ataku Osadzenie obcego kodu (np. JavaScript) na stronach WWW; przykładowo wklejając ten kod jako komentarz na forum. Obrona HTML escaping, ale nie obroni przed wszystkimi atakami. Ostrożność przy zapamiętywaniu obcego html u.

Cross site request forgery (CSRF) Opis ataku Nieświadome wykonanie akcji wymagającej uprawnień, np. poprzez kliknięcie na spreparowany link. Obrona Dodanie do formularzy ukrytego pola z losowym tokenem: <form action="." method="post">{% csrf_token %} i zabezpieczenie widoku from django.views.decorators.csrf import csrf protect from django.shortcuts import render @csrf protect def widok(request):

SQL injection Opis ataku Wstrzyknięcie obcego kodu do zapytania SQL Obrona Standardowo zapytania SQL są zabezpieczane poprzez dodanie ukośników przed znakami specjalnymi.

Clickjacking Opis ataku Oryginalna strona jest w sposób ukryty osadzana jako ramka na stronie na złośliwym serwerze. Obrona Zakazanie osadzania strony poprzez dodaniu taga X-Frame-Options: deny w odpowiedzi serwera: X_FRAME_OPTIONS = DENY